Method[] methods = Person.class.getDeclaredMethods();
System.out.print("访问修饰符:");
int modifier = method.getModifiers();
// 判断该方法的访问修饰符
if ((modifier & Modifier.PUBLIC) == Modifier.PUBLIC)
System.out.println("public");
else if ((modifier & Modifier.PROTECTED) == Modifier.PROTECTED)
System.out.println("protected");
else if ((modifier & Modifier.PRIVATE) == Modifier.PRIVATE)
System.out.println("private");
else 
System.out.println("default(package)");
下面一句:
(modifier & Modifier.PUBLIC) == Modifier.PUBLIC
为什么要用"&",
改为modifier==Modifier.PUBLIC不行吗?
modifier & Modifier.PUBLIC有什么作用啊?

解决方案 »

  1.   

    &是位运算,modifier和Modifier.PUBLIC返回的都是整数,用这种modifier==Modifier.PUBLIC做判断应该也是可以的,你自己试试吧
      

  2.   

    改为modifier==Modifier.PUBLIC  是不行的modifier是一个数字保存了这个类的很多标志
    只要modifier的最后一位是1,它就表示是个public的方法
    比方说modifier = 11111111
    此时 modifier != Modifier.PUBLIC  
    但是 ((modifier & Modifier.PUBLIC) == Modifier.PUBLIC)
    仍然是public的
      

  3.   


    有个笔误
    modifier是一个数字保存了这个方法的很多标志