如果一个Java®方法返回一个原始数据类型,然后MATLAB®转换数据,如表中所示原始的返回类型.
如果Java方法签名指定了类型为java . lang . object
,然后MATLAB转换实际返回的类型,如表中所示java . lang . object返回类型.
MATLAB不会将其他Java对象转换为MATLAB类型。有关处理此数据的信息,请参见将Java对象转换为MATLAB类型的函数.
MATLAB将Java方法返回的原始数据转换为最能代表MATLAB语言的数据类型。这个表格展示了MATLAB如何转换数据。对于某些Java类型,MATLAB对标量和数组返回的处理是不同的。
Java返回类型 | 结果MATLAB类型-标量 | 结果MATLAB类型-数组 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
签字人以
方法toCharArray
是:
公共char [] toCharArray ()
调用方法字符串
对象。MATLAB将输出转换为a字符
数组中。
str =以(“你好”);res = str.toCharArray '
Res = 1×5 char array
java . lang . object
返回类型当Java方法被声明为返回类型数据时java . lang . object
, MATLAB根据实际返回的类型转换它的值。这个表格展示了MATLAB如何转换数据。
实际的Java类型 | 结果MATLAB类型-标量 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果返回参数是。的子类,则不存在转换对象
或者一个数组对象
.对象仍然是一个Java对象。但是,如果你索引一个返回的对象
数组,MATLAB根据表转换值。有关更多信息,请参见转换对象数组元素到MATLAB类型.
a的签名如下getData
方法。
java . lang . object getData ()
如果getData
返回一个java.lang.Integer
对象,然后MATLAB将值转换为双
.
MATLAB仅在方法签名指定的情况下转换对象数据返回值java . lang . object
.如果签名指定了任何其他对象类型,则MATLAB不转换该值。例如,MATLAB确实转换了这个方法签名的返回值:
java . lang . object getData ()
但是MATLAB并没有对该方法的返回值进行转换:
以getData ()
要将Java对象数据转换为MATLAB数据,请使用以下主题中描述的MATLAB函数:
要将Java数值类型转换为MATLAB类型,请使用类似的MATLAB数值函数双
.采取的行动双
函数取决于指定的对象的类。
如果对象是派生类的实例java.lang.Number
,然后MATLAB将对象转换为MATLAB双
.
如果对象不是数值类的实例,则MATLAB检查类定义是否为toDouble
方法。MATLAB调用此方法来执行转换。
如果你创建了你自己的类,那么写一个toDouble
方法指定自己的类型转换。
请注意
如果对象的类不是派生的java.lang.Number
它没有实现toDouble
方法,然后双
命令功能显示错误信息。
转换以
对象和数组的MATLAB字符串或字符向量,使用MATLAB字符串
或字符
函数。
如果在MATLAB函数中指定的对象不是以
类,然后MATLAB检查它的类定义是否为atoString
或者一个toChar
方法。如果你创建了你自己的类,那么写一个toString
或toChar
方法指定字符串转换。
请注意
如果对象的类不是以
它没有实现toChar
方法,然后字符
命令功能显示错误信息。
如果Java类定义了字段名,则使用结构体
函数将对象数据转换为MATLAB结构。
假设您调用一个Java方法,该方法返回java.awt.Polygon
对象。类定义字段xpoints
和ypoints
.要运行此示例,请创建多边形
变量。
多边形= java.awt。多边形([14 42 98 124],[55 12 -2 62],4);
将对象转换为结构并显示第三个点的x、y坐标。
pstruct =结构(多边形)
Pstruct = struct with fields: npoints: 4 xpoints: [4×1 int32] ypoints: [4×1 int32]
如果您的Java方法返回不同类型的数据,则使用细胞
函数将数据转换为MATLAB类型。方法转换得到的单元格数组的元素原始的返回类型和java . lang . object返回类型表。
假设您调用返回类型参数的Java方法java.lang.Double
,java.awt.Point
,以
.要运行此示例,请创建这些类型的变量。
进口. lang . *java.awt。*%创建一个双精度Java数组dblArray = javaArray (“java.lang.Double”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)点;%创建Java字符串数组strArray = javaArray (“以”2、2);strArray(1,1) =字符串(“一个”);strArray(1、2)=字符串(“两个”);strArray(2, 1) =字符串(“三”);strArray(2, 2) =字符串(“四”);
将每个数组转换为单元格数组。您可以使用cellArray
在MATLAB函数。
cellArray ={细胞(dblArray)细胞(ptArray)细胞(strArray)}
cellArray = 1×3 cell array {1×10 cell} {3×1 cell} {2×2 cell}
每个单元格包含不同类型的数组。显示内容。
cellArray {1}% double类型的数组
ans = 1×10单元阵列[7][14][21][28][35][42][49][56][63][70]
cellArray {1,2}% Java.awt.Point类型的数组
Ans = 3×1 cell array [1×1 java.awt.]点][1×1 java.awt.Point][1×1 java.awt.Point]
cellArray {1,3}% char类型的数组
Ans = 2×2 cell array ' 1 ' ' 2 ' ' 3 ' ' 4 ' '