作者changyuheng (张昱珩)
看板java
标题Re: [问题] Generic 的 cast 问题
时间Wed Dec 24 10:06:59 2014
文章代码(AID):
#1Kai0iXE (java) [ptt.cc]
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1418903596.A.84E.html
1F:→ 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)。
--
http://changyuheng.github.io/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.141.140.113
※ 文章网址: http://webptt.com/cn.aspx?n=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