2013-04-27 138 views
-2

我聲明瞭一個對象數組。是否有可能使用我的自定義節點類而不是通用對象數組?這裏是我的代碼:轉換對象數組java

Object[] pos = new Object[28]; 
pos[1] = new HashSet<String>(); 

我的節點類只包含字符串值。我試着直接做,但不起作用。

Node[] pos = new Node[28]; 
pos[1] = new HashSet<String>(); 
+0

超類的所有其他類的你爲什麼不使用地圖,而不是節點陣列? – gurvinder372 2013-04-27 13:12:37

+1

我不明白你想要做什麼。 – 2013-04-27 13:13:51

+0

嘗試'pos1 = new Node();' – 2013-04-27 13:14:07

回答

1

不,你不能做你做了什麼:當你聲明Node類型的數組,只有Node類型的對象或類型衍生從中通過繼承可以數組元素。

Object[]數組配合使用的原因是Object是每個Java對象的基類。 HashSet<String>對象可以轉換爲java.lang.Object類型,但不能將其轉換爲無關類型Node

+0

有沒有解決方法? – user2326847 2013-04-27 13:18:10

+0

不可以。你爲什麼要解決它? – Brandon 2013-04-27 13:19:11

+0

@ user2326847 - 瞭解類繼承。 – 2013-04-27 13:19:20

1
Object[] pos = new Object[28]; 
    pos[1] = new HashSet<String>(); 

這工作,因爲一個HashSet 是一個對象

Node[] pos = new Node[28]; 
pos[1] = new HashSet<String>(); 

不起作用因爲節點是不是一個HashSet。您不能將HashSet放入預期有節點的數組中。

0

這裏試試這個:

String[] stringArray = (String[])valid.toArray(new String[valid.size()]); 
0

那麼當你做

Node[] pos = new Node[28]; 

它意味着你告訴給正在創建節點對象的數組,其長度爲28。但是,當編譯器你下面做

pos[1] = new HashSet<String>(); 

你試圖存儲HashSet對象,而不是你的節點對象。這是sompilation問題。

但隨着對象數組這將作爲對象是在Java