簡體   English   中英

如何使用Java反射查找成員的訪問修飾符

[英]How to find the access modifier of a member using java reflection

使用Java反射查找成員的訪問修飾符

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

我需要知道哪個變量是私有變量,受保護變量和公共變量?

如果您有一個類(在Vlucht下面的代碼中),則可以使用方法getDeclaredFields() ...然后,每個字段實例都可以調用下表中說明的方法getModifiers

從jdk1.5開始,反射API一直是相同的,因此java8與反射無關,而與使用流或類似方法訪問字段數組有關。

如果您確實需要人類可讀的內容,例如:

私人靜態決賽

受保護的或公開的

然后使用System.out.println(Modifier.toString(mod));

System.out.println(Modifier.toString(mod));

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);
    }
    }
}

在此處輸入圖片說明

對於類中的所有字段(假設類名為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM