如何确定类成员是否是静态的以及Java中的字段

时间:2015-01-30 03:46:50

标签: java reflection

如何判断班级成员是否是静态的? 我尝试使用.getModifiers()方法,但它没有返回所需的结果。

  • bcMember:
    • 会员标识符
    • 包含此成员的类的标识
    • boolean:如果member是static,则返回true,否则返回false
    • boolean:如果member是一个字段,则为true;否则
    • 会员的合格姓名'(返回)类型
    • 数组限定符:' '表示返回类型不是数组,' []'是一维数组,' [] []'是一个2D数组,依此类推。
    • 成员的签名:对于字段,它是字段的名称。对于方法,它是方法的名称,后跟其参数列表。

yparser.connection包的所需输出是:

bcClass(c0,'yparser.connection','Object').

/* public Constructors */
bcMember(m0,c0,true,false,'yparser.connection','','connection(String,String,String,String,String,String)').

/* public Fields */
bcMember(m1,c0,true,true,'String','','quote').
bcMember(m2,c0,true,true,'String','','comma').
bcMember(m3,c0,false,true,'String','','name1').
bcMember(m4,c0,false,true,'String','','role1').
bcMember(m5,c0,false,true,'String','','end1').
bcMember(m6,c0,false,true,'String','','name2').
bcMember(m7,c0,false,true,'String','','role2').
bcMember(m8,c0,false,true,'String','','end2').

/* public Methods */
bcMember(m9,c0,true,false,'void','','dump()').

2 个答案:

答案 0 :(得分:3)

你知道它是一个字段,因为它是一个Field对象。

确定它是否是静态的:

if(Modifier.isStatic(f.getModifiers()))
    System.out.println("Field is static!");

if((f.getModifiers() & Modifier.STATIC) != 0)
    System.out.println("Field is static!");

答案 1 :(得分:1)

fields[] fld= TheClass.class.getDeclaredFields();
for (Field fldd : fld) {
    if (java.lang.reflect.Modifier.isStatic(fldd.getModifiers())) {
        //Then the fldd is static
    }
}