我對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