Извлечение нескольких общих типов из поля в Java - PullRequest
0 голосов
/ 02 мая 2018

Я использую Spring boot и делаю рефлексию для извлечения классов в моем пакете, заканчивающемся "Repository" и всеми полями, объявленными как MyGenericClass<T,R>. Моя проблема в том, что я не могу извлечь ClassA и ClassB из myField

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

Я хочу запустить тот же код для:

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

и получите ClassC и ClassD из anotherField

1 Ответ

0 голосов
/ 02 мая 2018

Простой ответ, вы не можете вывести генерики во время выполнения, используя 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

...