2016-08-20 34 views
-2

成员的访问修饰符使用Java反射如何查找使用Java反射

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

我需要知道哪些变量是私有,保护和公共找到一个成员的访问修饰符?

+0

[java.lang.reflect.Field中](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#getModifiers - ) –

+0

@SergeyLagutin我之前看了一下这个API。它返回一个整数,表示访问修饰符值“private final static long”的总和。我的问题是看看是否有直接的API来获取“私有或公共”常量https://docs.oracle.com/javase/8/docs/api/constant-values.html#java.lang.reflect。 Modifier.PRIVATE –

+1

然后查看所有的'Modifier.is ***'方法:https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Modifier.html#isPrivate-int - – Tunaki

回答

2

如果你有一个类(以下代码Vlucht),那么你可以使用的方法getDeclaredFields() ... 然后每场实例可以调用该方法getModifiers这是在表explainted下面..

反射API一直以来JDK1.5相同的,所以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); 
    } 
    } 
} 

enter image description here