2013-02-25 46 views
1

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

回答

0

class [Ljava.lang.Object;[L表明類是陣列後,立即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,這可能是你的意思做(儘管沒有knowning你想做的事,前者可能,如果你知道你將通過更加合理在數組中)。

+0

非常感謝您的回覆。不勝感激。不幸的是,我不能改變公共的innerclassName構造函數,它是一個我必須導入的硬編碼類。而且我也無法更改類型(1)和類型(2)的值,因爲: '>> types(1)= java.lang.Object.class ???將字符賦值給Java數組是不允許的# 所以我在這裏有一堵磚牆! – tartanarmy123 2013-02-25 12:43:55

+0

@ tartanarmy123對不起,我的壞,我從來沒有在MATLAB中使用過Java,只有兩個分開。 'java.lang.Object.class'是引用類對象的java方法,但是在MATLAB中它以某種方式創建了一個帶有類名的字符串。嘗試創建一個新的單個對象,並在分配類型時使用「o」來代替'o',即'dummy = java.lang,Object;類型(:)= dummy.getClass();'。 – 2013-02-25 13:01:15

+0

非常感謝!使用假人實際上已經開始了!乾杯!! – tartanarmy123 2013-02-25 13:22:02

相關問題