gpt4 book ai didi

java - 如何迭代 TreeMap 并使用反射来获取子类名称?

转载 作者:行者123 更新时间:2023-12-01 12:53:51 25 4
gpt4 key购买 nike

假设我有以下抽象类和两个子类:

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 配对,bContact1 是一个业务对象。我想使用 Business 子类中的 showDetails() 方法来获取此特定值。

我可以很好地迭代 map ,但我在反射部分遇到问题。如有任何帮助,我们将不胜感激!

最佳答案

你不需要反射,你需要多态。只需调用对象上的方法,Java 将完成剩下的工作以调用正确的实现。

Contact contactRef = masterList.get(2);
contactRef.showDetails(); // overriden method invoked if it exists, inherited otherwise

关于java - 如何迭代 TreeMap 并使用反射来获取子类名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com