如果我有地圖入境的..對象,我有一類數組陣列一般人
private Entry<K,V> array;
我可以說
array = new Entry[someInt];
,我已經做了,或我需要像我的教練類型轉換說是必要的,如
array = (Entry<K,V> E[]) new Entry[someInt];
注意,第一個沒有工作,當我跑我的JUnits。
如果我有地圖入境的..對象,我有一類數組陣列一般人
private Entry<K,V> array;
我可以說
array = new Entry[someInt];
,我已經做了,或我需要像我的教練類型轉換說是必要的,如
array = (Entry<K,V> E[]) new Entry[someInt];
注意,第一個沒有工作,當我跑我的JUnits。
你有沒有想過做一個List?
Entry<K,V> array = new ArrayList<Entry<K,V>>();
array.add(new HashMap<K,V>());
我必須使用backingArray,但我只是想知道如果鑄造真的有必要 – user3338275
哦,陷阱。當使用Java集合框架類java ArrayList,LinkedList或HashSet等。它們接受一個類型爲java.lang.Object的對象,它允許將任何對象插入到集合中。當我們從集合中檢索Object時,它們的類型是java.lang.Object,它們需要分別進行強制轉換以執行操作。我沒有把你的整個代碼放在我面前,所以我不能告訴你我們是否可以在沒有得到類轉換異常的情況下進行聲明。 – John
我們基本上實現了我們自己的hashMap。第一種方式讓我沒有例外,運行良好,但我的教授說這是一個問題。 – user3338275
你可以做任何一個。隱式轉換原始類型允許不經過轉換。
array = new Entry[someInt];
將產生未經檢查的轉換警告。
array = (Entry<K,V>[])new Entry[someInt];
將產生一個未經檢查的投射警告。
因此,沒有一個比另一個好。
請注意,如果您創建一個通配符類型的數組,你需要有一個轉換:
array = (Entry<K,V>[])new Entry<?,?>[someInt]; // compiles
array = new Entry<?,?>[someInt]; // doesn't compile
你爲什麼會編輯回我做的代碼格式更改?你的代碼中有尖括號 –
第一種解決方案是不好的做法,第二種有一個錯字:array =(Entry [])new Entry [someInt];' –