Предположим, у меня есть следующий абстрактный класс и два подкласса:
public abstract class Contact {
private String name;
public void showDetails() {
System.out.println(name);
}
}
public class Personal extends Contact {
private String relationship;
// @override
public void showDetails() {
System.out.println(name);
System.out.println(relationship);
}
}
public class Business extends Contact {
private String company;
// @override
public void showDetails() {
System.out.println(name);
System.out.println(company);
}
}
Также предположим, что у меня есть TreeMap, содержащий целые числа в качестве ключей и объекты Business или Personal в качестве значений:
Map<Integer, Contact> masterList = new TreeMap<Integer, Contact>();
masterList.put(1, bContact1);
masterList.put(2, bContact2);
masterList.put(3, pContact1);
masterList.put(4, pContact2);
Можно ли выполнить итерацию по TreeMap И использовать отражение, чтобы увидеть, к какому подклассу принадлежит каждый объект, чтобы использовать правильный метод переопределения?
Например, ключ 1 связан с bContact1, который является бизнес-объектом. Я хочу использовать метод showDetails() из подкласса Business для этого конкретного значения.
Я могу нормально перебирать карту, но у меня проблемы с частью отражения. Любая помощь приветствуется!