#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. Фактически, стирание типа гарантирует, что тип параметра не может быть чем-то более конкретным.