Main Content

处理从爪哇Methods

If a Java®方法返回原始数据类型,然后返回MATLAB®converts the data, as shown in the table in原始返回类型

如果Java方法签名指定类型的返回数据java.lang.Object,然后matlab转换返回的实际类型,如表中所示java.lang.Object返回类型

MATLABdoes not convert other Java objects to MATLAB types. For information about handling this data, see将Java对象转换为MATLAB类型的功能

原始返回类型

MATLABconverts primitive data returned from a Java method into types that best represent the data to the MATLAB language. This table shows how MATLAB converts the data. For some Java types, MATLAB treats scalar and array returns differently.

Java返回类型 产生的MATLAB类型 - 标量 Resulting MATLAB Type — Array

boolean

逻辑

逻辑

字节

双倍的

int8

短的

双倍的

int16

int

双倍的

int32

双倍的

INT64

float

双倍的

单身的

双倍的

双倍的

双倍的

char

char

char

例子

The signature for thejava.lang.String方法Tochararray是:

公共char [] tochararray()

调用该方法细绳目的。MATLAB将输出转换为char大批。

str = java.lang.String('你好');res = str.toCharArray'
res = 1×5 char数组你好

java.lang.ObjectReturn Types

When a Java method is declared to return data of typejava.lang.Object,,,,MATLABconverts its value depending on the actual type returned. This table shows how MATLAB converts the data.

Actual Java Type 产生的MATLAB类型 - 标量

java.lang.boolean

逻辑

java.lang.Byte

双倍的

java.lang.short

双倍的

java.lang.integer

双倍的

java.lang.long

双倍的

java.lang.float

双倍的

java.lang.Double

双倍的

Java.lang.Character

char

java.lang.String

char

如果返回参数是一个子类,则没有转换Objector an array ofObject。The object remains a Java object. However, if you index into a returnedObject数组,MATLAB根据表转换值。有关更多信息,请参阅将对象数组元素转换为MATLAB类型

例子

Refer to the following signature for agetData方法。

java.lang.Object getData()

IfgetData返回ajava.lang.integer对象,然后matlab将值转换为双倍的

要转换的函数爪哇Objects toMATLAB类型

MATLABonly converts object data return values if the method signature specifiesjava.lang.Object。如果签名指定任何其他对象类型,则MATLAB不会转换值。例如,MATLAB确实转换了此方法签名的返回值:

java.lang.Object getData()

但是MATLAB不会转换此方法的返回值:

java.lang.string getData()

To convert Java object data to MATLAB data, use MATLAB functions as described in these topics:

转换成MATLABNumeric Types

To convert Java numeric types to MATLAB types, use a numeric MATLAB function like双倍的。The action taken by the双倍的函数取决于您指定的对象的类。

  • 如果对象是从java.lang.Number,然后MATLAB将对象转换为MATLAB双倍的

  • 如果对象不是数字类的实例,则MATLAB检查一个类定义todouble方法。MATLABcalls this method to perform the conversion.

  • If you create your own class, then write atodouble指定自己的类型转换的方法。

笔记

如果对象的类不是derived fromjava.lang.Numberand it does not implement atodouble方法,,,,then the双倍的功能显示错误消息。

转换成MATLAB细绳s

To convertjava.lang.Stringobjects and arrays to MATLAB strings or character vectors, use the MATLAB细绳orchar功能。

If the object specified in the MATLAB function is not an instance of thejava.lang.Stringclass, then MATLAB checks its class definition for atoor aTochar方法。If you create your own class, then write atoorTochar方法to specify the string conversion.

笔记

如果对象的类不是java.lang.Stringand it does not implement aTochar方法,,,,then thechar功能显示错误消息。

转换成MATLABStructure

如果Java类定义了字段名称,请使用结构功能将对象数据转换为MATLAB结构。

Suppose that you call a Java method that returns ajava.awt.polygon目的。该类定义字段XPointsandypoints。要运行此示例,请创建一个polygon多变的。

polygon = java.awt.polygon([14 42 98 124],[55 12 -2 62],4);

将对象转换为结构并显示第三点的X,y坐标。

psstruct = struct(polygon)
ps struct =带字段的结构:npoints:4 xpoints:[4×1 int32] ypoints:[4×1 int32]

转换成MATLAB单元阵列

如果您的Java方法返回不同类型的数据,请使用cell功能可将数据转换为MATLAB类型。根据所得单元阵列的元素根据原始返回类型andjava.lang.Object返回类型表。

假设您调用返回类型参数的Java方法java.lang.Double,,,,java.awt.Point,,,,andjava.lang.String。To run this example, create variables of these types.

进口java.lang。*java.aw。*% Create a Java array of doubledblarray = javaarray('java.lang.Double',1,10);为了m = 1:10 dblarray(1,m)= double(m * 7);结尾%创建Java点数ptarray = javaarray('java.awt.point',3);ptarray(1)=点(7.1,22);ptarray(2)=点(5.2,35);ptarray(3)=点(3.1,49);% Create a Java array of stringsstrArray = javaArray('java.lang.String',2,2);Strarray(1,1)=字符串('one');Strarray(1,2)=字符串('二');Strarray(2,1)=字符串('three');Strarray(2,2)=字符串('four');

将每个数组转换为单元格数组。您可以使用cellArray在MATLAB函数中。

cellArray = {cell(dblArray),cell(ptArray),cell(strArray)}
cellarray = 1×3个单元格数组{1×10个小区} {3×1个蜂窝} {2×2 cell}

每个单元格保持不同类型的数组。显示内容。

cellarray {1,1}%double类型阵列
ANS = 1×10个单元格阵列[7] [14] [21] [28] [35] [42] [49] [56] [63] [70]
cellarray {1,2}% Array of type Java.awt.Point
ans = 3×1单元格数[1×1 Java.awt.point] [1×1 Java.awt.point] [1×1 Java.aw.awt.point]
cellarray {1,3}% Array of type char array
ans = 2×2单元阵列的一个“两个”“三”“四”

Related Topics