Получить только общедоступные методы класса с использованием отражения Java
Я пытаюсь использовать отражение, чтобы захватить все общедоступные методы, которые явно объявлены в классе (поэтому c.getMethods()
не будет работать, так как он также захватывает методы суперкласса). я могу использовать
Method[] allMethods = c.getDeclaredMethods();
чтобы захватить методы только из этого класса, но я только хочу использовать публичные.
На данный момент я пытаюсь захватить модификаторы и выполнять определенные действия на основе этого, но по какой-то причине значение модификатора, показанное в отладчике и выходе значения модификатора, не совпадает. Например, у меня есть частный метод getNode
который, когда значение "модификаторы" отображается как 2
в отладчике, оно выводит "1"
когда я делаю System.out.println(c.getModifiers())
. Weird. Есть ли другой способ получить только публичные методы, или я пропущу что-то очевидное? Спасибо за любую помощь!
Ответы
Ответ 1
Я не знаю, как вы используете Modifier
, но здесь, как он должен использоваться
Method[] allMethods = Test.class.getDeclaredMethods();
for (Method method : allMethods) {
if (Modifier.isPublic(method.getModifiers())) {
System.out.println(method);
// use the method
}
}