我聲明瞭一個對象數組。是否有可能使用我的自定義節點類而不是通用對象數組?這裏是我的代碼:轉換對象數組java
Object[] pos = new Object[28];
pos[1] = new HashSet<String>();
我的節點類只包含字符串值。我試着直接做,但不起作用。
Node[] pos = new Node[28];
pos[1] = new HashSet<String>();
我聲明瞭一個對象數組。是否有可能使用我的自定義節點類而不是通用對象數組?這裏是我的代碼:轉換對象數組java
Object[] pos = new Object[28];
pos[1] = new HashSet<String>();
我的節點類只包含字符串值。我試着直接做,但不起作用。
Node[] pos = new Node[28];
pos[1] = new HashSet<String>();
不,你不能做你做了什麼:當你聲明Node
類型的數組,只有Node
類型的對象或類型衍生從中通過繼承可以數組元素。
與Object[]
數組配合使用的原因是Object
是每個Java對象的基類。 HashSet<String>
對象可以轉換爲java.lang.Object
類型,但不能將其轉換爲無關類型Node
。
有沒有解決方法? – user2326847 2013-04-27 13:18:10
不可以。你爲什麼要解決它? – Brandon 2013-04-27 13:19:11
@ user2326847 - 瞭解類繼承。 – 2013-04-27 13:19:20
Object[] pos = new Object[28];
pos[1] = new HashSet<String>();
這工作,因爲一個HashSet 是一個對象。
Node[] pos = new Node[28];
pos[1] = new HashSet<String>();
這不起作用因爲節點是不是一個HashSet。您不能將HashSet放入預期有節點的數組中。
這裏試試這個:
String[] stringArray = (String[])valid.toArray(new String[valid.size()]);
那麼當你做
Node[] pos = new Node[28];
它意味着你告訴給正在創建節點對象的數組,其長度爲28。但是,當編譯器你下面做
pos[1] = new HashSet<String>();
你試圖存儲HashSet對象,而不是你的節點對象。這是sompilation問題。
但隨着對象數組這將作爲對象是在Java
超類的所有其他類的你爲什麼不使用地圖,而不是節點陣列? – gurvinder372 2013-04-27 13:12:37
我不明白你想要做什麼。 – 2013-04-27 13:13:51
嘗試'pos1 = new Node();' – 2013-04-27 13:14:07