Ljava.lang.Object错误 - Matlab / Java

时间:2013-02-25 11:51:07

标签: java matlab object

我是java的新手,我正在尝试做一些涉及嵌套类的java,我在Matlab中运行它。所以我有我的内部类和我的外部类,我正在尝试创建这个新类的实例,它需要两个java.lang.Objects作为它的构造函数但是当我尝试这样做时我得到一个错误,它说我试图通过通过这个Ljava.lang.Object而不是java.lang.Object。关于它是如何编码的名称研究了一点,但我真的不明白。任何帮助将不胜感激,我的代码(来自Matlab)在下面!

>> p = innerclass.getConstructors();

>> p(1) 

ans = 

public innerclassName(java.lang.Object, java.lang.Object)

>> k=javaArray('java.lang.String',3);
>> k(1)=java.lang.String('a');
>> k(2)=java.lang.String('b');
>> k(3)=java.lang.String('c');

>> v=javaArray('java.lang.Integer',3,2);
>> v(1,1) = java.lang.Integer(1);
>> v(2,1) = java.lang.Integer(2);
>> v(3,1) = java.lang.Integer(3);
>> v(1,2) = java.lang.Integer(4);
>> v(2,2) = java.lang.Integer(5);
>> v(3,2) = java.lang.Integer(6);

>> o=[java.lang.Object();java.lang.Object()];
>> o(1) = k;
>> o(2) = v;
>> o.getClass()

ans =

class [Ljava.lang.Object;

>> types=javaArray('java.lang.Class',2) ;
>> types(1)=o.getClass();
>> types(2)=o.getClass();
>> in1 = innerclass.getConstructor(types).newInstance(o)
??? Java exception occurred:
java.lang.NoSuchMethodException: innerclassName.<init>([Ljava.lang.Object;, [Ljava.lang.Object;)

1 个答案:

答案 0 :(得分:0)

[L中的class [Ljava.lang.Object;表示该类是紧跟在L之后的数组。另见what is `[Ljava.lang.Object;?

执行types(1)=o.getClass();types(2)=o.getClass();时,为types的两个元素分配值“对象数组”。 innerclass.getConstructor(types)然后尝试找到一个构造函数,如果innerclass两个对象数组作为参数,并且找不到一个,那么NoSuchMethodException

您要么创建构造函数public innerclassName(java.lang.Object[], java.lang.Object[]),要么将types的值都更改为java.lang.Object.class,这可能就是您要做的事情(尽管不知道您想要做什么,如果你知道你将传入数组,前者可能更合理。)