有没有办法制作另一种类型的新对象?
示例:
Soldier extends Person
Accountant extends Person
Person的每个子类都有一个接受(BirthDate和DeathDate)
的构造函数我有一个名为prepPerson(Person)的方法,它接受一个Person。我想要一个JComboBox填充不同类型的Person对象(Accountant,Soldier),我调用.getSelectedItem()并返回一个Person对象。
由于我只使用那些Person对象来填充JComboBox菜单,如何检测所选人员的类型,创建一个新的Soldier或Accountant对象,以便我可以将它传递给prepPerson方法?
答案 0 :(得分:1)
在instanceof
上使用getType()
或创建方法Person
,返回枚举 - Person
的类型。
但是当你在这种情况下开始使用instanceof
时,你可能会考虑以某种方式改变设计。
你能描述一下为什么以后需要区分它们吗?
答案 1 :(得分:1)
如果您要进行有限数量的选择,请执行以下操作:
Person thePerson = null; // note, don't call variables theAnything... it's just bad
JComboBox theBox = new JComboBox(new String[]{"Accountant","Soldier","Programmer"});
// later
public void actionPerformed(ActionEvent e) {
if(e.getSource() == theBox) {
String who = (String)theBox.getSelectedItem();
if(who.equals("Accountant") thePerson = new Accountant();
if(who.equals("Soldier") thePerson = new Soldier();
if(who.equals("Programmer") thePerson = new Programmer();
}
}
答案 2 :(得分:0)
为什么需要检测类型?您有一个Person
,您必须将Person
传递给新方法。
您可能会从有用的人身上找到分离的角色/类型。这样任何人都可以拥有一个或多个可以随时改变的角色。