[問題] 泛型類別...

看板java作者 (每天進步一點點)時間17年前 (2008/06/02 23:02), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/3 (看更多)
程式碼如下: public class z { public static void main(String[] argv) { //String[] s = (String[])new Object[10]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SimpleCollection<String> Sim = new SimpleCollection<String>(); } } class SimpleCollection<T> { private T[] objArr; public SimpleCollection() { objArr = (T[]) new Object[10]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } 請問板上眾多高手!上面那兩行有什麼不同? 依照我的觀念是,SimpleCollection中在compile time的時候會被取代為 private String[] objArr; public SimpleCollection() { objArr = (String[]) new Object[10]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } 但是這樣看起來怪怪的!? String型態的陣列參考指向Object!? 這樣可以編譯並執行不會丟出例外!? 但是在main中的那個我注解的statment並沒有辦法順利編譯~!這是為什麼原因阿? 是泛型類別中有什麼樣的特性我沒注意到嗎? 來補上完整程式碼好了 class Test { public static void main(String[] args) { SimpleCollection<Integer> c = new SimpleCollection<Integer>(); for(int i = 0; i < 10; i++) { c.add(new Integer(i)); } for(int i = 0; i < 10; i++) { Integer k = c.get(i); } } } class SimpleCollection<T> { private T[] objArr; private int index = 0; public SimpleCollection() { objArr = (T[]) new Object[10]; //問題在這 } public SimpleCollection(int capacity) { objArr = (T[]) new Object[capacity]; //還有這 } public void add(T t) { objArr[index] = t; index++; } public int getLength() { return index; } public T get(int i) { return (T) objArr[i]; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.0.173 ※ 編輯: tgbsa 來自: 118.170.0.173 (06/02 23:07)

06/02 23:41, , 1F
你確定可以編譯並執行???
06/02 23:41, 1F

06/02 23:56, , 2F
是的
06/02 23:56, 2F
※ 編輯: tgbsa 來自: 118.170.0.173 (06/03 00:01)
文章代碼(AID): #18H0kFMK (java)
討論串 (同標題文章)
文章代碼(AID): #18H0kFMK (java)