Как использовать интерфейс в качестве параметра, когда я пытаюсь использовать отражение в Java

#java #generics #reflection #interface #methods

#java #дженерики #отражение #интерфейс #методы

Вопрос:

У меня есть универсальный интерфейс:

 public interface DataTable < T > {

}
 

И у меня есть заводской класс, возвращающий экземпляр моего класса, который реализует DataTable<T>

 public class DataTableFactory<T> {

    public DataTable<T> getInstance() { 
             return dataTableImpl();
    }
}
 

И другой класс с именем list, у которого есть метод public void setDataTable(DataTable < T > dataTable)

Теперь я просто хочу вызвать этот метод, используя отражение Java:

 Helper helper = new Helper(operationsFile);
Class c = null;
c = Class.forName(helper.getClassName("list"));
Object t = c.newInstance();

Method methodSetDataTable = c.getDeclaredMethod("setDataTable", paramTypes);
 

В этом примере я не смог найти, как получить paramTypes .

Ответ №1:

Не видя объявления метода for setDataTable , я ожидаю , что тип параметра будет справедливым DataTable.class .

Комментарии:

1. Фактически, стирание типа гарантирует, что тип параметра не может быть чем-то более конкретным.