Проверьте, является ли поле истинным или ложным с отражениями в java - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время пытается кодировать некоторые функции меню и интересуется, есть ли способ узнать, является ли логическое поле истинным или ложным. Это код, который я сейчас пытаюсь, но я получаю ошибку

try{

     field = a.getClass().getField(b); 

     if(toggle==1&&field){
     }else if(toggle==1&&!field){
       field.set(a, true);
     }else if(toggle==0&&!field){
     }else if(toggle==0&&field){
       field.set(a, false);
     }
}catch (NullPointerException e) {
}catch (NoSuchFieldException e) {
}catch (IllegalAccessException e) {
}

Ошибка

The operator && is undefined for the argument type(s) boolean, Field

Ответы [ 3 ]

1 голос
/ 16 марта 2020

a.getClass().getField(b); return java.lang.reflect.Field;, не логический тип.

Вы можете использовать field.getBoolean(a), чтобы получить логическое значение.

0 голосов
/ 16 марта 2020

Вам необходимо получить значение поля на основе экземпляра.

boolean value = field.getBoolean(instance);
0 голосов
/ 16 марта 2020

Class.getField(String) возвращает java.lang.reflect.Field. Вы захотите вызвать getBoolean с этим a в качестве аргумента. Обратите внимание, что вы предполагаете, что это поле publi c, что, вероятно, не очень хорошая идея. Также рефлексия обычно очень плохая идея.

...