Re: [問題] 泛型類別...

看板java作者 (非天夜翔)時間17年前 (2008/06/03 01:05), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/3 (看更多)
另外我想借標題問如何在 template 中,new 出實體? class Test { public static void main(String[] argv) { TemplateClass<String> ts = new TemplateClass<String>; String s = ts.newInstance(); } } class TemplateClass<T> { public T newInstance() { return new T(); << 這裡會有問題,想問這邊該如何改可以達到我想要的效果 } } ※ 引述《tgbsa (每天進步一點點)》之銘言: : 程式碼如下: : public class z { : public static void main(String[] argv) : { : //String[] s = (String[])new Object[10]; : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 剛剛測試是可以通過編譯,但是會有 Warning : SimpleCollection<String> Sim = new SimpleCollection<String>(); : } : } : class SimpleCollection<T> : { : private T[] objArr; : public SimpleCollection() : { : objArr = (T[]) new Object[10]; : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這行一樣也會有 Warning : } : } : 請問板上眾多高手!上面那兩行有什麼不同? : 依照我的觀念是,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: 59.104.31.180

06/03 02:04, , 1F
沒有return ?
06/03 02:04, 1F

06/03 03:35, , 2F
1.沒main method 2.new TemplateClass<String>()<-忘了打
06/03 03:35, 2F

06/03 03:37, , 3F
3.new T()並非所有的建構元型式都是這樣
06/03 03:37, 3F
※ 編輯: csihcs 來自: 59.104.31.180 (06/03 11:35)
文章代碼(AID): #18H2Xnrr (java)
討論串 (同標題文章)
文章代碼(AID): #18H2Xnrr (java)