0

这可能是一种非常愚蠢的处理方式,但是假设我们有一个包含许多作为组件的字段的类,如何通过反射将它们添加到每个循环中?

到目前为止,这是我尝试过的(尽管它显然注定要失败):

for(Field bits: this.getClass().getDeclaredFields()){
            try {
                this.add((Component)Class.forName(bits.getName()).newInstance());
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

每个字段都不是一个类,因此执行上述操作将不起作用,但我已经定义了它们是什么,它们应该在运行时存在。

我应该怎么做?

4

1 回答 1

1

您尝试从字段名称创建一个类,所以它不起作用。

bits.getName() 返回类似“myHelloWorldLabel”的内容,而不是 javax.swing.JLabel。

您可以添加字段的值bits.get(this)或从类中创建一个新对象bits.getDeclaringClass().newInstance()

我还将添加一个检查该类是否扩展了 JComponent。

于 2013-06-20T18:58:13.480 回答