clazz.getDeclaredMethods()
将返回所有方法,但我只想要那些public static
方法,我该如何制作呢?
答案 0 :(得分:5)
在getModifiers
对象上调用Method
后,您需要查看Modifier
课程
public static void main(String[] args) throws Exception { //Read user input into the array
Method method = Main.class.getDeclaredMethod("main", String[].class);
int modifiers = method.getModifiers();
System.out.println(modifiers);
System.out.println(Modifier.isStatic(modifiers));
System.out.println(Modifier.isPublic(modifiers));
System.out.println(Modifier.isAbstract(modifiers));
}
打印
9
true
true
false
int
值包含static
,public
等修饰符的特定位位置信息。
答案 1 :(得分:1)
你应该迭代返回的方法并检查getModifiers()方法。 如果它返回STATIC。
中的更多信息答案 2 :(得分:1)
尝试使用:
Modifier.isStatic(method.getModifiers()).
示例:
public static List<Method> getStaticMethods(Class<?> clazz)
{
List<Method> methods = new ArrayList<Method>();
for (Method method : clazz.getMethods())
{
if (Modifier.isStatic(method.getModifiers()))
{
methods.add(method);
}
}
return Collections.unmodifiableList(methods);
}