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