从Java中的字段中提取多个通用类型

时间:2018-05-02 08:14:35

标签: java spring spring-boot generics

我正在使用Spring启动,并且我正在进行反射以提取我的包中的类,结束于&#34; Repository&#34;以及所有声明为MyGenericClass<T,R>的字段。我的问题是我无法从ClassA中提取ClassBmyField

public class ContainerRepository{
private MyGenericClass<ClassA, ClassB> myField;}

我希望针对以下代码运行相同的代码:

public class ProcessRepository{
private MyGenericClass<ClassC, ClassD> anotherField;}

ClassC

获取ClassDanotherField

1 个答案:

答案 0 :(得分:2)

简单回答,您无法使用Reflection在运行时推断泛型。但是,您可以轻松地将字段类型标记为实例变量(非常黑客但不确定是否有帮助)。

public class MyGenericClass<M, N> {

    private M mType;
    private N nType;

    MyGenericClass (M m, N n){
        this.mType = m;
        this.nType = n;
    }

    public Class<?> getMType(){
        return this.mType.getClass();
    }

    public Class<?> getNType(){
        return this.nType.getClass();
    }

}

以下参考: https://stackoverflow.com/a/26088911/2931410