如何找出类成员是静态的还是Java中的字段

你如何找出一个班的成员是静态的还是一个领域? 我尝试使用.getModifiers()方法,但它没有返回所需的结果。

  • bcMember:
  • 成员标识符
  • 包含此成员的类的标识符
  • boolean:如果member是静态的,则为true,否则为false
  • boolean:如果member是一个字段,则为true; 否则为假
  • 成员(返回)类型的合格名称
  • 数组限定符:''表示返回类型不是数组,'[]'是一维数组,'[] []'是二维数组,等等。
  • 成员签名:对于一个字段,它是该字段的名称。 对于一个方法,它是方法的名称,后面跟着一个参数列表。
  • 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()').
    

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

    要确定它是否是静态的:

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

    要么

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

    fields[] fld= TheClass.class.getDeclaredFields();
    for (Field fldd : fld) {
        if (java.lang.reflect.Modifier.isStatic(fldd.getModifiers())) {
            //Then the fldd is static
        }
    }
    
    链接地址: http://www.djcxy.com/p/57409.html

    上一篇: How to find out if a class member is static and a field in Java

    下一篇: Getting Type instance of implemented interface with type parameters applied