【问题标题】:To list all the fields of a class and put them in a list if they match a desired type列出一个类的所有字段,如果它们匹配所需的类型,则将它们放在一个列表中
【发布时间】:2020-01-08 20:14:59
【问题描述】:

标题很混乱,但我想要实现的是调用我类中所有(摆动)按钮/标签的方法。 (使它们看起来都相似)

有点像这样:

for(Button btn: components)
  btn.setThisTheme();

其中components[] 是一个JComponent-s 数组。 到目前为止,我已经尝试过:

    // at beginning of class
    private LinkedList<JComponent> components = new LinkedList<>();
    private Field[] fields = ToDo.class.getDeclaredFields().length;


   // in constructor
   for (Field field: fields) {
            if(field.getType() == JComponent.class) { 
                components.add(field); // how to do this? 
// field is a Field and i need to convert it into the variable it represents...
            }
        }

【问题讨论】:

    标签: java class nullpointerexception field gettype


    【解决方案1】:

    您正在创建一个nulls 数组。

    private Field[] fields = new Field[ToDo.class.getDeclaredFields().length];
    

    你应该可以直接使用getDeclaredFields返回的数组了。

    private Field[] fields = ToDo.class.getDeclaredFields();
    

    几乎可以肯定,您可以在没有反思的情况下将自己想做的事情做得更好。

    【讨论】:

    • 很好,谢谢。我没有注意到这么简单的错误,有时最好让其他人阅读您的代码:)
    • 嗯...实际上我在同一件事上还有另一个问题,我编辑问题
    • @KamilSuhak 你应该问一个新问题来问一个新问题。但是,您需要一个实际实例才能读取FieldField 本身是指所有对象,甚至可能是一个静态字段。所以将field 替换为(JComponent)(field.get(this)) 之类的东西。
    猜你喜欢
    • 2022-01-22
    • 2021-03-20
    • 1970-01-01
    • 2022-09-25
    • 2021-09-23
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多