Ljava.lang.Object error语言 - Matlab/Java



我对java很陌生,我正在尝试做一些涉及嵌套类的java,并在Matlab中运行它。所以我有我的innerclass和outerclass,我试图创建这个新类的一个实例,它以两个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;)

class [Ljava.lang.Object;中的[L表示该类是紧跟在L后面的数组。另请参阅什么是`[Ljava.lang.Object;?

执行types(1)=o.getClass();types(2)=o.getClass();时,将值"Object array"分配给types的两个元素。然后,如果innerclass两个对象数组为参数,但找不到一个,则innerclass.getConstructor(types)尝试查找构造函数,因此为NoSuchMethodException

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

最新更新