有一问题?
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是一个数字保存了这个
方法的很多标志