作者adrianshum (Alien)
看板java
标题Re: [问题] generic里面的type
时间Wed Apr 30 15:50:12 2008
※ 引述《Fenikso (我是蜜蜂~)》之铭言:
: ※ 引述《Fenikso (我是蜜蜂~)》之铭言:
: : → Fenikso:而且我要的是"Class<T>"的instance 不是"T"的 04/30 11:47
: : → Fenikso:T的instance可能世界上根本就不存在XD 04/30 12:03
: : 推 qrtt1:太多可能性, 是否要宣告此题不值得浪费时间思考 !? 04/30 12:20
: : → Fenikso:哪来的太多可能性 那根本不是重点啊.. 04/30 12:37
: : 推 godfat:是要你问题讲清楚啦,不然只有你知道什麽是重点 04/30 13:50
: : → adrianshum:如果你确定 collection 有东西就拿第一个 element 吧?. 04/30 14:53
: 不行 因为 第一个element.getClass()传回的不一定是Class<T>
: 可能是T的subclass
: ---
: 好吧 那我就再讲清楚一点..
: 实作一个function, prototype长这样
: public Class<T> foo(Collection<T> x) {}
: 例如说
: Collection<Integer> c = 随便什麽东西
: foo(c) 传回来的要是Integer.class
: 这样够清楚了吧
: ---
那就如 qrtt1 说的, 这种做法只有另外再传一个 class 进来
像这样:
public void foo(Collection<T> x , Class<T> clazz) {
// do whatever u want with clazz
}
Generics 在这里能为你做的只是帮你做 type checking, makesure
你传的 clazz 没有传错而已
e.g.
//compilation failure
public<T> void foo(new ArrayList<String>(), Integer.class);
alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
※ 编辑: adrianshum 来自: 202.155.236.82 (04/30 15:50)
1F:推 Fenikso:现在是这样做的 但是多传一个不必要的参数总觉得不太痛快 05/01 02:23