主要内容

处理从Java方法

如果一个Java®方法返回一个原始数据类型,然后MATLAB®转换数据,如表中所示原始的返回类型

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

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

原始的返回类型

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

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

布尔

逻辑

逻辑

字节

int8

int16

int

int32

int64

浮动

字符

字符

字符

例子

签字人方法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.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函数中指定的对象不是类,然后MATLAB检查它的类定义是否为atoString或者一个toChar方法。如果你创建了你自己的类,那么写一个toStringtoChar方法指定字符串转换。

请注意

如果对象的类不是它没有实现toChar方法,然后字符命令功能显示错误信息。

转换为MATLAB结构

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

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

多边形= 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]

转换为MATLAB单元阵列

如果您的Java方法返回不同类型的数据,则使用细胞函数将数据转换为MATLAB类型。方法转换得到的单元格数组的元素原始的返回类型java . lang . object返回类型表。

假设您调用返回类型参数的Java方法java.lang.Doublejava.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 ' '

相关的话题