仅在JComboBox中将类名称作为字符串进行实例化

时间:2014-03-16 16:59:59

标签: java inheritance jcombobox

我有一个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);          
    }
});

1 个答案:

答案 0 :(得分:0)

我认为你可以使用Class类来完成它。这些链接有更多信息。

What is the difference between "Class.forName()" and "Class.forName().newInstance()"?

How do I get a class reference from a String in Java?

祝你好运!