java中的getModifiers() &4的作用

解决方案 »

  1.   

    个人猜测:
    感觉有点怪异,如果是java.lang.reflect.Modifier中的方法,难道是如果是用它判断取到的东西的标识符是否为protected的?
    java.lang.reflect.Modifier中的一些public static final int变量中对应的就是public、private、static、synchronized、final等等标识符,
    其中protected是这样的:
    public static final int PROTECTED = 0x00000004;
    0x00000004对应的二进制是0100,4对应的二进制也是0100,只有它 & 4结果才不是0,其他的标识符&4结果都是0,所以这样可以根据结果是否为0判断是否为protected.
    不过直接Modifier.PROTECTED == xx.getModifiers()就能判断了啊。
      

  2.   


    xx.getModifiers() 返回的结果包括其他标志位的,比如 static, final 等等。
    所以用4这个MASK把其他标志为屏蔽,只看是否是protected