使用java反射
查找成员的访问修饰符private final static long serialId = 1L;
protected String title;
public String FirstName;
我需要知道哪个变量是私有的,受保护的和公共的?
答案 0 :(得分:2)
如果您有课程(在 Vlucht 下面的代码中),那么您可以使用方法 getDeclaredFields() ... 然后每个字段实例都可以调用 getModifiers 方法,这些方法在下表中进行了说明。
自jdk1.5以来,Reflection 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);
}
}
}
答案 1 :(得分: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);