1. 前几天在水木上看到有人问
class Demo>E<{
public Class getDynamicClass(){
Class clazz=//----------------------如何获取E的类?
return clazz;
}
}
貌似只能这样解决
class Demo>E<{
E e;
public void addElement(E e){
this.e = e;
}
public Class getDynamicClass(){
Class clazz = e.getClass();
return clazz;
}
}
一些相关评论
Java的范型就是半个残废
nod,Java的范型除了防止类型转换错误以外我真想不起来有什么实质的用途。
尤其是那个文档中说的,编译的时候拿掉,运行的时候再检查...
确实没什么用,jg老糊涂了偏要听信c++那个bs老头才有这个败笔,我一直这么认为
这个东西欧n年前就没有搞出来
还是有点用的,在ORM中定义多对一或者多对多关系的时候,
List>C< numbers;
这时候偶就知道numbers关联的是C类,不需要在其它地方再配置了,
为啥没用
否则对容器的使用还得停留在指针时代
C#的泛型性能还是很好的,只是Java的实现机制那啥了点。。。
最后有人回
很多事情,不要着急下结论。以下代码算转载,不算原创。

-------------华丽的分割线---------------------------------
protected Class getDomainClass() {
if (domainClass == null) {
ParameterizedType thisType = (ParameterizedType)
getClass().getGenericSuperclass();
domainClass = (Class)
thisType.getActualTypeArguments()[0];
}
return domainClass;
}
-------------华丽的分割线---------------------------------
还没试过可不可以
2. 另外一个类似的帖子的回复
System.out.println(((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
试验了半天
public class BaseClass>M<{
public void showType(){
ParameterizedType ptype = (ParameterizedType) getClass()
.getGenericSuperclass();
System.out.println(ptype.getActualTypeArguments()[0]);
}
}
public class ExClass>M< extends BaseClass>M<{}

new ExClass>Date<().showType(); //得到 "M" 而不是想要的 "Date" :'(

我以前也想这么搞,可是没搞成,后来看Java关于泛型的实现,认为没希望。
前面所说的方式只有在
public class SomeClass extends BaseClass>AnotherClass< {...}
这样定义的时候才能取到AnotherClass ...
3. 看到另一个帖子说运行期没有范型

posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于Java的范型机制

Posted on 2007-04-22 20:26 ZelluX 阅读(540) 评论(0)  编辑  收藏 所属分类: OOP
2007-04-21 11:12:29
只有注册用户登录后才能发表评论。


网站导航: