我有一个JComboBox,用户可以从94个不同的选项中选择,用字符串表示,对应94个不同的类。
所有94个类都从一个父类继承,称为AbstractTiling。 选择其中一个选项(ComboBox中的字符串)之后,应该实例化所选的类。 但由于有94种不同的可能性,我不想使用94 if语句。 所以我用hashmap尝试了它,但是这导致了我仍然不知道我想要实例化的确切类型的问题,所以我不能使用类从父类覆盖的方法或者有父类没有。
在代码示例中,hasmap中只有两个条目作为示例。这是代码:
JComboBox groupscb = new JComboBox(isohedrals);
groupscb.setSelectedIndex(52);
groupscb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int selectedItem = ((JComboBox)arg0.getSource()).getSelectedIndex();
Map <Integer, Object> hm = new HashMap<Integer, Object>();
hm.put(52, new IH52());
hm.put(55, new IH55());
//here I want to instantiate the class, since I don't know it
//I used the parent class. But this keeps me from using the
//child classes methods
AbstractTiling tiling = (AbstractTiling) hm.get(selectedItem);
}
});
答案 0 :(得分:0)
我认为你可以使用Class类来完成它。这些链接有更多信息。
What is the difference between "Class.forName()" and "Class.forName().newInstance()"?
祝你好运!