[英]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.