Как найти модификатор доступа члена, используя отражение Java

java reflection

1380 просмотра

2 ответа

Найдите модификатор доступа члена, используя отражение Java

private final static long serialId = 1L;
protected String title;
public String FirstName;

Мне нужно знать, какая переменная является закрытой, защищенной и общедоступной?

Автор: Suresh Raja Источник Размещён: 08.11.2019 11:11

Ответы (2)


2 плюса

Если у вас есть класс (в приведенном ниже коде Vlucht ), вы можете использовать метод getDeclaredFields () ... тогда каждый экземпляр поля может вызывать метод getModifiers, который описан в таблице ниже ..

Reflection API был таким же, как и в jdk1.5, поэтому java8 не имеет отношения к отражению, но больше касается доступа к массиву полей с использованием потоков или подобного.

если вам действительно нужно что-то читаемое человеком, например:

приватный финал

защищенный или публичный

затем используйте System.out.println(Modifier.toString(mod));

System.out.println (Modifier.toString (моды));

public class Vlucht {
    private final static long serialId = 1L;
    protected String title;
    public String FirstName;

    public static void main(String[] args) {
    Field[] reflectedClass = Vlucht.class.getDeclaredFields();
    for (Field field : reflectedClass) {
        int mod = field.getModifiers();
        System.out.println(mod);
    }
    }
}

введите описание изображения здесь

Автор: ΦXocę 웃 Пepeúpa ツ Размещён: 20.08.2016 11:00

0 плюса

Для всех полей в классе (при условии, что класс называется theClass)

Field[] fields = theClass.getDeclaredFields();
for (Field field : fields) {
    int modifers = field.getModifiers();
    if (Modifier.isPrivate(modifers)) {
        System.out.println(field.getName() + " is Private");
    }
}

Следующие методы определения также могут быть использованы:

boolean isPrivate(Field field){
    int modifers = field.getModifiers();
    return Modifier.isPrivate(modifers);
}

boolean isProtected(Field field){
    int modifers = field.getModifiers();
    return Modifier.isPublic(modifers);
}

boolean isPublic(Field field){
    int modifers = field.getModifiers();
    return Modifier.isProtected(modifers);
}

Пример использования (дан класс с именем theClass)

Field titleField = theClass.getField("title");
boolean titleIsProtected = isProtected(titleField);
Автор: Andrew Размещён: 10.04.2018 02:38
Вопросы из категории :
32x32