日期:2014-05-20  浏览次数:20606 次

有一问题?
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有什么作用啊?

------解决方案--------------------
&是位运算,modifier和Modifier.PUBLIC返回的都是整数,用这种modifier==Modifier.PUBLIC做判断应该也是可以的,你自己试试吧
------解决方案--------------------
改为modifier==Modifier.PUBLIC  是不行的

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



------解决方案--------------------
引用:
改为modifier==Modifier.PUBLIC  是不行的

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


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