使用Modifier.isStatic(method.getModifiers())。
/**
* Returns the public static methods of a class or interface,
* including those declared in super classes and interfaces.
*/
public static List getStaticMethods(Class> clazz) {
List methods = new ArrayList();
for (Method method : clazz.getMethods()) {
if (Modifier.isStatic(method.getModifiers())) {
methods.add(method);
}
}
return Collections.unmodifiableList(methods);
}
注意:从安全的角度来看,这种方法实际上是危险的。 Class.getMethods“bypass [es] SecurityManager根据直接调用者的类加载器进行检查”(参见Java安全编码准则的第6节)。
免责声明:未测试,甚至编译器。
注意修改器应谨慎使用。表示为ints的标志不是类型安全。一个常见的错误是在不适用的反射对象类型上测试修饰符标志。可能的情况是,设置相同位置中的标志以表示一些其他信息。