【问题标题】:How to get generic class in java如何在java中获取泛型类
【发布时间】:2014-09-05 06:20:59
【问题描述】:

例如,我有课:

SuperClass.java:

public class SuperClass<A extends ClientsDTO> {

    ...
    private A getChildsGenericClass{
        //???
    }
}

用户.java

class User extends SuperClass<UserDTO> {
    ...
}

那么我怎样才能在SuperClassgetChildsGenericClass方法中访问UserDTO的类呢?

【问题讨论】:

  • 我知道,可以使 getChildGenericClass 抽象并在子类中覆盖它,返回新的 UserDTO,但我希望这不是最好的解决方案。
  • 当您说要访问 UserDTO 类时,您要访问的是什么?
  • @coder,例如 UserDTO.class

标签: java oop generics superclass


【解决方案1】:
public A example; //this is variable from you can get Class
private Class<Object> getChildsGenericClass() {
        return (Class)((ParameterizedType)
                 (this.getClass().getGenericSuperclass()))
                                      .getActualTypeArguments()[0];
    }

确实有效!

【讨论】:

    【解决方案2】:

    您没有将 UserDTO 的实例传递给超类。
    如果没有实例,您要访问哪些对象字段?

    当你想访问 UserDTO 类时,你可以很容易地写:

    Class c = UserDTO.class;
    

    在其他情况下,也许你想要这样的东西:

    public class SuperClass<T extends ClientsDTO> {
    
        private Class<T> m_clz;
        public NewClass(Class<T> p_clz)
        {
           m_clz = p_clz;
        }
    
        private Class<T> getChildsGenericClass()
        {
           return m_clz;
        }
    

    }

    【讨论】:

    • 不,我想访问 A 类,在这种情况下是 UserDTO。无论如何,我是通过反思做到的。
    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多