zoukankan      html  css  js  c++  java
  • 怎么获取泛型T.class类?

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

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

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

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

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

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

    建议你改成如下方式:

    public <E> E get(List<E> list, Class<E> clazz) {
        getA(clazz);
        return null;
    }
    
    public <E> void get1(List<E> list, Class<E> clazz) {
        getA(clazz);
    }
    
    public void getA(Class<?> clazz) {
    }

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

     
    List<String> list = JSON.parseArray("['abc','xyz']", String.class);
    User user = JSON.parseObject("{'name':'tom','age':23,'sex':0}", User.class);
  • 相关阅读:
    太久了
    idea文件过大解决方法
    ibus词库导入
    Linux认证考试
    Idea Linux 下的配置 max_user_watches
    SpringBoot启动过程之web,servlet/filter等
    SpringBoot启动过程学习
    也谈一下面试
    MVCC
    Python pyside2 qt 画画面
  • 原文地址:https://www.cnblogs.com/smiler/p/10000917.html
Copyright © 2011-2022 走看看