[問題] Generic 的 cast 問題

看板java作者 (張昱珩)時間10年前 (2014/12/12 00:08), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/6 (看更多)
希望下面的 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(); } } -- http://changyuheng.github.io/ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.98.95 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418314103.A.5E9.html

12/12 10:14, , 1F
本身的邏輯就怪怪的
12/12 10:14, 1F

12/12 10:45, , 2F
要不cast你type就要用generic,那你整個class就要有個Type
12/12 10:45, 2F

12/12 10:45, , 3F
parameter,你現在的作法完全不generic,跟用List沒差別..
12/12 10:45, 3F
文章代碼(AID): #1KYS5tNf (java)
文章代碼(AID): #1KYS5tNf (java)