тип generic-параметр

225
26 ноября 2016, 19:13

Интересует как можно определить тип generic-параметра с помощью Reflection в Java? И есть ли для этого другие методы?

Answer 1

Есть дженерик:

public class SampleGeneric <T>{
    T t;
    public SampleGeneric(T t){
        this.t = t;
    }
}

Как узнать, какого типа у текущего объекта поле:

SampleGeneric<String> sample = new SampleGeneric<>("Test");
Class<? extends SampleGeneric> sampleClass = sample.getClass();
Field[] fields = sampleClass.getDeclaredFields();
for(Field f: fields){
    f.setAccessible(true);
    if(f.getName().equals("t")){
        try {
            Object get = f.get(sample);
            System.out.println(get.getClass().getName());
        } catch (IllegalArgumentException | IllegalAccessException ex) {
            Logger.getLogger(GenericReflectionTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
READ ALSO
Как подставить символы типа String в выражение?

Как подставить символы типа String в выражение?

Как подставить символы типа String в выражение

200
Где лучше создавать Retrofit клиент?

Где лучше создавать Retrofit клиент?

Я обычно создавала Retrofit клиент в классе App в onCreate(), но услышала мнение, что это неправильно, так как по сути получается, что это не СинглтонГде...

327
Абстрактный класс BaseActivity

Абстрактный класс BaseActivity

Я хочу создать абстрактный класс BaseActivity, от которого бы наследовались остальные Activity в проекте, во всех классах Activity у меня сейчас используется...

204
NavigationDrawer и клавиатура

NavigationDrawer и клавиатура

Во время нажатия на EditText появляется клавиатура, но когда открываем NavigationDrawer то она никуда не пропадает и даже если перейдем на другой фрагмент...

303