Re: [問題] Generic 的 cast 問題

作者: changyuheng (張昱珩)   2014-12-24 10:06:59
文章代碼(AID): #1Kai0iXE (java) [ptt.cc]
※ 文章網址: http://www.ptt.cc/bbs/java/M.1418903596.A.84E.html
→ swpoker: 不太懂為什麼你要堅持用字串來判別型別,直接用型別就好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)。
作者: swpoker (swpoker)   2013-12-19 11:17:00
不太懂為什麼你要堅持用字串來判別型別,直接用型別就好

Links booklink

Contact Us: admin [ a t ] ucptt.com