主要内容

处理返回的数据Java方法

如果一个Java®方法返回一个基元数据类型,然后是MATLAB®转换数据,如表中所示基本返回类型

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

MATLAB不将其他Java对象转换为MATLAB类型。有关处理此数据的信息,请参见函数转换Java对象到MATLAB类型

基本返回类型

MATLAB将从Java方法返回的原始数据转换为最能向MATLAB语言表示数据的类型。下表显示了MATLAB如何转换数据。对于某些Java类型,MATLAB对标量返回和数组返回的处理是不同的。

Java返回类型 结果MATLAB类型-标量 结果MATLAB类型-数组

布尔

逻辑

逻辑

字节

int8

int16

int

int32

int64

浮动

字符

字符

字符

例子

的签名方法toCharArray是:

public char[] toCharArray()

调用的方法字符串对象。MATLAB将输出转换为a字符数组中。

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

java . lang . object返回类型

当Java方法声明为返回类型的数据时java . lang . object, MATLAB根据返回的实际类型转换其值。下表显示了MATLAB如何转换数据。

实际Java类型 结果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

字符

字符

的子类,则没有转换对象或者一个数组对象.对象仍然是Java对象。但是,如果索引成返回的对象数组,MATLAB根据表转换值。有关更多信息,请参见将对象数组元素转换为MATLAB类型

例子

a .请参阅以下签名getData方法。

java . lang . object getData ()

如果getData返回一个java.lang.Integer对象,然后MATLAB将值转换为

要转换的函数Java对象MATLAB类型

MATLAB仅在方法签名指定时转换对象数据返回值java . lang . object.如果签名指定任何其他对象类型,则MATLAB不转换该值。例如,MATLAB确实转换了这个方法签名的返回值:

java . lang . object getData ()

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

以getData ()

若要将Java对象数据转换为MATLAB数据,请使用以下主题中描述的MATLAB函数:

转换为MATLAB数值类型

要将Java数值类型转换为MATLAB类型,请使用MATLAB数值函数,如.所采取的行动函数取决于所指定对象的类。

  • 派生的类的实例java.lang.Number,然后MATLAB将对象转换为MATLAB

  • 如果对象不是数值类的实例,则MATLAB检查类定义中的toDouble方法。MATLAB调用此方法来执行转换。

  • 如果您创建自己的类,则编写toDouble方法指定您自己的类型转换。

请注意

如果对象的类没有从java.lang.Number它没有实现toDouble方法,则函数显示错误消息。

转换为MATLAB字符串

转换对象和数组转换为MATLAB字符串或字符向量,使用MATLAB字符串字符函数。

函数中指定的对象如果不是的实例类,然后MATLAB检查它的类定义为toString或者一个toChar方法。如果您创建自己的类,则编写toStringtoChar方法指定字符串转换。

请注意

如果对象的类不是它没有实现toChar方法,则字符函数显示错误消息。

转换为MATLAB结构

如果Java类定义了字段名,则使用结构体函数将对象数据转换为MATLAB结构。

假设您调用一个Java方法,该方法返回java.awt.Polygon对象。类定义字段xpoints而且ypoints.要运行此示例,请创建一个多边形变量。

Polygon = java.awt。多边形([14 42 98 124],[55 12 -2 62],4);

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

Pstruct = struct(多边形)
Pstruct = struct with fields: npoints: 4 xpoints: [4×1 int32] ypoints: [4×1 int32]

转换为MATLAB单元阵列

如果Java方法返回不同类型的数据,则使用细胞函数将数据转换为MATLAB类型。属性转换生成单元格数组的元素基本返回类型而且object返回类型表。

假设您调用返回类型参数的Java方法java.lang.Doublejava.awt.Point,.要运行此示例,请创建以下类型的变量。

进口. lang . *java.awt。*创建一个double的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) = String(“一个”);strArray(1,2) = String(“两个”);strArray(2,1) = String(“三”);strArray(2,2) = String(“四”);

将每个数组转换为单元格数组。你可以使用cellArrayMATLAB函数。

cellArray = {cell(dblArray),cell(ptArray),cell(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单元格数组' 1 ' ' 2 ' ' 3 ' ' 4 '

相关的话题