Re: [問題] Generic 的 cast 問題

看板java作者 (張昱珩)時間9年前 (2014/12/24 10:07), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
文章代碼(AID): #1Kai0iXE (java) [ptt.cc] ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418903596.A.84E.html

12/19 11:17,
不太懂為什麼你要堅持用字串來判別型別,直接用型別就好
12/19 11:17
AbsList 只是一個例子,像現在這樣寫確實沒什麼 sense, 既然是 list class,設計得像官方的 List<T> 系列 class 就好了。 但事實上可以不要管架構,我只是想問語法,例子是隨手創的。 像 Map 裡裝了兩個 generic type, new Map 時不明確把這兩個 generic type 要裝誰傳進去, 就要讓 compiler 能由 new Map 左邊的宣告推定。 除了 Map 的實作需要,<K, V> 本來就是 Map interface 的一部分。 但我想接龍簡化語法,內部的 generic type 希望能在這樣的過程中發揮他的功能: Clz.newInstance(identifier).doSomething().getTheResult()... 可以發現只吃一個參數就初始化內部的 generic 參數 (們), 因為裡面有張表會決定要丟什麼給他 (們)。 這邊跟 Map 就不太一樣了, "Program to an 'interface', not an 'implementation'." 當然內部的 generic 參數就希望不要露在 interface 上。 如果 Clz 是 Clz<K, V> 或者 method 是 <T, TT> Clz doSomething(), 那邊這一行裡就一定要寫 <String, Number> 這樣的東西。 發問的目的是想知道怎麼省掉,在 Clz 內部又不用每次使用前都先 cast, 不然每次要用 generic type member 前都要先跑一次 switch(identifier)。 -- http://changyuheng.github.io/ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.141.140.113 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1419386823.A.414.html ※ 編輯: changyuheng (220.141.140.113), 12/24/2014 10:10:06 ※ 編輯: changyuheng (220.141.140.113), 12/24/2014 10:22:41 ※ 編輯: changyuheng (221.120.4.172), 12/24/2014 23:27:04
文章代碼(AID): #1KcX_7GK (java)
討論串 (同標題文章)
文章代碼(AID): #1KcX_7GK (java)