首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JAVA 获取引用类型?解决方案

2012-08-01 
JAVA 获取引用类型?比如Java codepublic class RestDomainE{private String urlprivate E objpublic S

JAVA 获取引用类型?
比如

Java code
public class RestDomain<E>{    private String url;        private E obj;        public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public E getObj() {        return obj;    }}

当object 实例化时,obj域指向null,在不给obj引用付值实际对象前,有什么方法可以得到obj引用的类型
效果需要等同于 obj.getClass().getSimpleName();
求高人指点。。。

[解决办法]
RestDomain<E>.getClass().getMethod("getObj").getReturnType().getSimpleName();

[解决办法]
目前应该没有办法拿到的,你只能拿到E,或者拿到Object
这个问题有很多人问过,基本上最后都回放弃这样的思路
因为反射拿到的是编译好的RestDomain<E>的class信息,但是用户定义的变量如RestDomain<String> object,解析器根本没法找到RestDomain<String>的class信息(没有这样的class文件),怎么可能知道E就是String?因为只能拿到RestDomain<E>的class信息(即RestDomain<E>的class文件),所以只能知道E或者泛型擦除变成Object
[解决办法]
探讨
目前应该没有办法拿到的,你只能拿到E,或者拿到Object
这个问题有很多人问过,基本上最后都回放弃这样的思路
因为反射拿到的是编译好的RestDomain<E>的class信息,但是用户定义的变量如RestDomain<String> object,解析器根本没法找到RestDomain<String>的class信息(没有这样的class文件),怎么可能知道E就是String?因为只能拿到……

热点排行