java怎么传空值给matlab,奇怪的类从MATLAB传递到Java

我有一些MATLAB代码和一些需要相互通信的Java代码.我得到了NoSuchMethodError.当我将MATLAB双数组传递给接受double []参数的Java方法时.

所以我写了一个简单的“hello world”来获取传递给该方法的对象的类

public void printArray(Object array) {

System.out.println(array.getClass());

System.out.println(array.getClass().getPackage());

}

从MATLAB调用这个方法,我得到了这个有趣的输出:

>> a.printArray(2)

class java.lang.Double

package java.lang

>> a.printArray('hello')

class java.lang.String

package java.lang

>> a.printArray(true)

class java.lang.Boolean

package java.lang

>> a.printArray([2 3 4])

class [D

null

>> a.printArray([true false])

class [Z

null

有人可以解释发生了什么.我有MATLAB R14和Java类编译1.3兼容性.

解决方法:

我认为最初的问题是updated by the OP,所以我将借此机会总结我们迄今为止的发现:

>我们已经确定原始问题中的示例代码产生了预期的行为. MATLAB将数据作为基元传递给Java,Java对对象执行适当的自动装箱.正如在Matthew Simoneau’s reply中指出的那样,MATLAB在其文档的“Passing Data to a Java Method”部分解释了它如何将其数据类型与Java数据类型相匹配.令人惊讶的是,单个MATLAB数据类型可能匹配不同的Java数据类型,例如逻辑匹配boolean,byte,short,int,long,float和double,按优先顺序排列.

> OP最初遇到的NoSuchMethodError是由使用错误的方法引起的.这是no longer a problem.使用double []作为方法参数有效.

>“奇怪的”类名([D和[Z])实际上是Java用来描述基本类型数组的符号. API解释了Class.getName()中的用法.

案例结束=)

标签:java,matlab

来源: https://codeday.me/bug/20190607/1193208.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值