clazz.getDeclaredMethods()
вернет все методы, но мне нужны только те методы public static
, как это сделать?Как получить все общедоступные статические методы класса в Java?
1
A
ответ
5
Вы должны проверить с Modifier
класса после вызова getModifiers
на Method
объектах
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
вы должны перебирать возвращаемые методы и проверять метод getModifiers(). Если он возвращает STATIC или нет.
Более подробная информация в javadoc
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);
}