主要内容

传递数据到Java方法

MATLAB类型Java类型映射

当你通过MATLAB®data作为Java的参数®方法,MATLAB将数据转换为最能向Java语言表示数据的类型。有关将数据传递给类型参数时的类型映射的信息. lang,请参阅传递Java对象

下表中的每一行都显示了一个MATLAB类型,后面跟着可能的Java参数匹配,从左到右按照匹配的紧密程度排序。MATLAB类型(单元格数组除外)可以是标量(1乘1)数组或矩阵。Java类型可以是标量值或数组。

MATLAB的论点

Java参数类型(标量或数组)
对象以外的类型

最近的类型 <———————————————————————> 至少近类型

逻辑

布尔

字节

int

浮动

浮动

int

字节

布尔

浮动

uint8
int8

字节

int

浮动

uint16
int16

int

浮动

uint32
int32

int

浮动

uint64
int64

浮动

字符串标量,
特征向量,
字符标量

字符串

字符串数组,
字符向量的单元格数组
看到传递字符串参数

String []

类型的Java对象jClass

Java对象类型的jClass

的任何超类jClass

对象的单元格数组

对象[]

MATLAB对象

不支金宝app持的

数组尺寸如何影响转换

这个词表示寻址数组元素所需的下标数。例如,一个5 × 1的数组只有一个维度,因为您使用一个数组下标为单个元素建立索引。

在将MATLAB转换为Java数组时,MATLAB以一种特殊的方式处理维数。对于MATLAB数组,维数是数组中非单维数。例如,一个10 × 1数组的维数为1。然而,1 × 1数组的维数为0,因为您不能索引到标量值中。在Java代码中,嵌套数组的数量决定维数。例如,双[][]维度是2,然后维数为0。

如果Java数组的维数与MATLAB数组中的维数匹配n,则转换后的Java数组有n维度。如果Java数组的值小于n维度,然后转换删除单维度,从第一个维度开始。当剩余维度的数量与Java数组中的维度数量匹配时,转换停止。如果Java数组有超过n个维度,那么MATLAB会添加尾随的单例维度。

将数字转换为整数参数

当将整数类型传递给接受Java整数参数的Java方法时,MATLAB转换与Java整型之间的转换相同。特别是,如果整数超出范围,则它不符合参数类型的位数。对于超出范围的整数,MATLAB丢弃所有最小值n位。的值n参数类型中的位数。这种转换不同于MATLAB整数类型之间的转换,后者将范围外的整数转换为目标类型表示的最大值或最小值。

如果参数是一个浮点数,那么MATLAB不会以与Java相同的方式将其转换为整数。MATLAB首先将浮点数转换为截断小数部分的64位有符号整数。然后该数字被处理,就好像它是一个int64论点。

浮点数太大,不能用64位整数表示(在-2范围之外)63263.在这种情况下,MATLAB使用以下转换:

  • int,字节参数值为0

  • 参数值为java.lang.Long.MIN_VALUE

  • 而且-1

  • 0

传递字符串参数

调用Java方法,参数定义为,传递一个MATLAB字符串或字符向量。MATLAB将参数转换为Java字符串对象。你也可以通过字符串Java方法返回的对象。

方法参数为类型的数组字符串,然后传递一个字符串数组或字符向量的单元格数组。MATLAB将输入转换为Java数组字符串对象,其尺寸按数组尺寸如何影响转换

通过Java对象

要调用具有属于Java类(而不是Java类)的参数的方法java . lang . object),您必须传递一个Java对象,该对象是该类的实例。MATLAB不支持Java自动装金宝app箱,将MATLAB类型自动转换为Java对象类型。例如,MATLAB不进行转换java.lang.Double类型的参数

通过java . lang . object

方法的参数时,会出现特殊情况java . lang . object类。由于该类是Java类层次结构的根,因此可以在参数中传递任何类的对象。MATLAB自动将参数转换为最接近的Java对象类型,其中可能包括java风格的自动装箱。下表显示了转换。

MATLAB的论点

Java对象在包. lang

逻辑

布尔

浮动

字符标量

字符

字符串标量
非空的字符向量

字符串

uint8
int8

字节

uint16
int16

uint32
int32

整数

uint64
int64

字符串阵列(nonscalar)
字符向量的单元格数组

String []

Java对象

参数不变

单元阵列

对象[]

MATLAB对象

不支金宝app持的

传递对象数组

调用参数定义为的方法java . lang . object或者一个数组java . lang . object,传递一个Java数组或MATLAB单元格数组。中的描述,MATLAB自动将单元格数组元素转换为它们的Java类型通过java . lang . object表格Java数组是从Java构造函数返回的数组。方法在MATLAB中构造Java数组javaArray函数。

传递单元数组Java对象

要创建Java对象的单元格数组,请使用MATLAB语法{a1, a2,…}.您可以使用下面的语法以通常的方式索引到Java对象的单元格数组中{m, n,…}.例如,创建单元格数组一个

a1 = java.lang.Double(100);a2 = java.lang.Float(200);A = {a1,a2}
A = 1×2 cell array [1×1 java.lang。Double] [1×1 java.lang.Float]

传递空矩阵、空值和缺失值

MATLAB转换一个空矩阵如下。

  • 如果参数为空字符向量,且参数声明为字符串,然后MATLAB传入一个空的(不是) Java字符串对象。

  • 对于所有其他情况,MATLAB将空数组转换为Java数组

空(0-length) Java数组不变。

MATLAB转换< >失踪字符串中的值

重载方法

当在Java对象上调用重载方法时,MATLAB将您传递的参数与为该方法定义的参数进行比较。在这种情况下,术语方法包括构造函数。MATLAB根据Java转换规则确定调用的方法并将参数转换为Java类型。有关更多信息,请参见传递对象数组

当你调用一个Java方法时,MATLAB确保:

  1. 对象或类(对于静态方法)有一个同名的方法。

  2. 调用传递至少一个具有该名称的方法的相同数量的参数。

  3. 每个传递的参数都转换为为该方法定义的Java类型。

如果满足所有这些条件,则MATLAB调用该方法。

在对重载方法的调用中,如果有多个候选参数,MATLAB将选择具有最适合调用参数的参数。首先,MATLAB拒绝参数类型与传递的参数不兼容的方法。例如,如果方法有参数,即一个字符争论是不相容的。

然后MATLAB选择具有最高适应度值的方法,该方法是其所有参数的适应度值之和。每个参数的适应度值是基本类型的适应度减去MATLAB数组维数和Java数组维数之间的差值。有关数组维数的信息,请参见数组尺寸如何影响转换.如果两个方法具有相同的适应度,则选择Java类中定义的第一个方法。

相关的话题