Чтобы вывести список всех полей класса и поместить их в список, если они соответствуют требуемому типу - PullRequest
0 голосов
/ 08 января 2020

Заголовок довольно запутанный, но я хочу добиться вызова метода для всех (колеблющихся) кнопок / меток в моем классе. (чтобы они все выглядели одинаково)

Примерно так:

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

, где components[] - массив JComponent-ов. Пока я пробовал это:

    // 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...
            }
        }

1 Ответ

2 голосов
/ 08 января 2020

Вы создаете массив null s.

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

Вы должны иметь возможность использовать массив, возвращенный getDeclaredFields напрямую.

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

Почти наверняка вы можете делать то, что вы хотите, лучше без размышлений.

...