Передать дженерик тип в перегруженый метод
Есть следущий код с использованием дженериков.
public class Core<T> {
public void pEntity() {
Person person= new Person();
T entity= new Something<T>().getE();
ObjectSetter.setPersonId(entity,person);
}
}
ObjectSetter имеет перегруженные методы.
public static void setPersonId(Class1 cls1, Person person){
cls1.setPersonId(person.getId());
}
public static void setPersonId(Class2 cls2, Person person){
cls2.setIdPerson(person.getId());
}
IDEA ругается на это
Cannot resolve method 'setPersonId(T, model.Person)'
Полагаю надо использовать Instanceof, но перегрузка выглядит так удобно и лаконично. Или я что то совсем напутал... помогите новичку, как лучше сделать?
Ответы (1 шт):
Вы не сможете использовать instanceOf, дженерик типы стираются после компиляции и в рантайме приложение не в состоянии определить входящий тип.
Если вы хотите перегрузить метод, то надо писать либо два дженерика под каждый из методов либо приводить все к одному методу который будет принимать какой-то интерфейс типа <T extends YourInterface> в котором будет нужный вам метод и уже в реализации каждого класса вы будете определять как его реализовать.