经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
怎么获取泛型T.class类?
来源:cnblogs  作者:幕三少  时间:2018/11/23 10:20:46  对本文有异议
  1. public <T> void get(List<T> list){
  2. getA(T.class); //报错,不能调用T.class
  3. }
  4. public void getA(Class<?> class){
  5. }

 

如上代码,要调用getA()方法,必须传入一个Class类,使用泛型怎么传递这个Class类呢?

在java里泛型操作还是很麻烦的。
例如这种:

  1. class Service<K, V> {
  2. // 此处的K,V都可以获取
  3. // 多个的时候也一样
  4. }
  5. class StringService extends Service<String, Integer> {
  6. }

 

但是你直接写在方法上的这种是没办法获取的。

  1. public <T> void get(List<T> list){
  2. getA(T.class); //报错,不能调用T.class
  3. }

 

建议你改成如下方式:

  1. public <E> E get(List<E> list, Class<E> clazz) {
  2. getA(clazz);
  3. return null;
  4. }
  5. public <E> void get1(List<E> list, Class<E> clazz) {
  6. getA(clazz);
  7. }
  8. public void getA(Class<?> clazz) {
  9. }

 

hibernate,fastjson等都是这么反射的,例如:

  1. List<String> list = JSON.parseArray("['abc','xyz']", String.class);
  2. User user = JSON.parseObject("{'name':'tom','age':23,'sex':0}", User.class);

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号