Re: [問題] Generic 的 cast 問題

看板java作者 (Alien)時間9年前 (2014/12/12 00:29), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/6 (看更多)
public class AbsList<T> { private List<T> mList = new ArrayList<T>(); private T valueToAdd; private AbsList(T valueToAdd) { this.valueToAdd = valueToAdd; } // 你本身的 factory method 不合理,修改成這樣 public static <E> AbsList<E> newInstance(E valueToAdd) { return new AbsList<E>(valueToAdd); } public void go() { this.mList.add(valueToAdd); for (T element : mList) { System.out.println(String.valueOf(element)); } } public static void main(String args[]) { AbsList.newInstance("string").go(); } } 或有點 syntax eror, 意思懂就好 ※ 引述《changyuheng (張昱珩)》之銘言: : 希望下面的 mList 可以不 cast 直接使用,請問是不是做不到? : import java.util.LinkedList; : import java.util.List; : public class AbsList { : private List<?> mList; : private String mType; : public AbsList newInstance(String type) { : mType = type; : switch (type) { : case "String": : mList = new LinkedList<String>(); : break; : case "Number": : mList = new LinkedList<Number>(); : } : return this; : } : public void go() { : switch (mType) { : case "String": : ((List<String>) mList).add("A"); : for (String s : (List<String>) mList) : System.out.println(s); : break; : case "Number": : ((List<Number>) mList).add(0); : for (Number n : (List<Number>) mList) : System.out.println("" + n); : } : } : public static void main (String[] args) { : new AbsList().newInstance("String").go(); : } : } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.19.45.197 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418315390.A.5DF.html ※ 編輯: adrianshum (223.19.45.197), 12/12/2014 00:30:48 ※ 編輯: adrianshum (223.19.45.197), 12/12/2014 00:31:49

12/12 17:22, , 1F
推!
12/12 17:22, 1F
文章代碼(AID): #1KYSP-NV (java)
討論串 (同標題文章)
文章代碼(AID): #1KYSP-NV (java)