zoukankan      html  css  js  c++  java
  • Java中获取泛型对象中的类型

    在方法调用的时候,有时候需要传一个Class<T>泛型过来。

    但是,有时候,传过来的Class又是泛型。

    比如下面代码

    List<User>

    这时,传过去的只能是

    List.class

    此时就达不到我们想要的类型,List<User>的效果。

    在这里只要实现一个类就可以获取到List<User>

    public class DefaultTargetType<T> {
    
        private Type type;
        private Class<T> classType;
    
        @SuppressWarnings("unchecked")
        public DefaultTargetType() {
            Type superClass = getClass().getGenericSuperclass();
            this.type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
            if (this.type instanceof ParameterizedType) {
                this.classType = (Class<T>) ((ParameterizedType) this.type).getRawType();
            } else {
                this.classType = (Class<T>) this.type;
            }
        }
    }

    结果:

    Class<List<User>> classType = new DefaultTargetType<List<User>>() {}.getClassType();

    就可以获取到泛型中的类型了。

  • 相关阅读:
    数据结构实验之栈四:括号匹配
    数据结构实验之栈三:后缀式求值
    8月7日学习
    8月6日学习
    8月5日学习
    8月4日学习
    周总结
    8月3日学习
    8月2日学习
    8月1日学习
  • 原文地址:https://www.cnblogs.com/se7end/p/11248540.html
Copyright © 2011-2022 走看看