使用Java反射查找成员的访问修饰符
private final static long serialId = 1L;
protected String title;
public String FirstName;
我需要知道哪些变量是私有的、受保护的和公共的?
使用Java反射查找成员的访问修饰符
private final static long serialId = 1L;
protected String title;
public String FirstName;
我需要知道哪些变量是私有的、受保护的和公共的?
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);
Modifier.is***
方法:https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Modifier.html#isPrivate-int- - Tunaki