我对Java很新,我想做一些涉及嵌套类的java,我在Matlab
中运行它。所以我有我的内部类和我的外部类,我试图创建这个新类的实例,它需要两个java.lang.Objects
作为它的构造函数,但是当我尝试这样做时,我收到一个错误,它说我试图通过这个Ljava.lang.Object
作为与java.lang.Object相反。研究了一下关于这是如何编码的名字,但我不太明白。任何帮助将不胜感激,我的代码(从Matlab
)在下面!Ljava.lang.Object error - Matlab/Java
>> 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;)
非常感谢您的回复。不胜感激。不幸的是,我不能改变公共的innerclassName构造函数,它是一个我必须导入的硬编码类。而且我也无法更改类型(1)和类型(2)的值,因为: '>> types(1)= java.lang.Object.class ???将字符赋值给Java数组是不允许的# 所以我在这里有一堵砖墙! – tartanarmy123 2013-02-25 12:43:55
@ tartanarmy123对不起,我的坏,我从来没有在MATLAB中使用过Java,只有两个分开。 'java.lang.Object.class'是引用类对象的java方法,但是在MATLAB中它以某种方式创建了一个带有类名的字符串。尝试创建一个新的单个对象,并在分配类型时使用“o”来代替'o',即'dummy = java.lang,Object;类型(:)= dummy.getClass();'。 – 2013-02-25 13:01:15
非常感谢!使用假人实际上已经开始了!干杯!! – tartanarmy123 2013-02-25 13:22:02