В моем коде есть метод, который должен вызывать метод doSomething
объекта. Заранее неизвестно, есть ли у класса объекта открытый метод или нет. До сих пор я использовал следующий код:
try {
Method method = component.getClass().getMethod("doSomething", Boolean.TYPE);
method.invoke(component, true);
} catch (final NoSuchMethodException e) {
// do nothing as for some components the method "doSomething" simply does not exist
}
Теперь мне интересно, стоит ли мне пытаться избегать NoSuchMethodException
, проверяя, есть ли в классе объекта публичный метод doSomething
.
final Method method = Arrays.stream(component.getClass().getMethods())
.filter(m -> m.getName().equals("doSomething")).findFirst().orElse(null);
if (method != null) {
method.invoke(component, true);
}
Что ты думаешь лучше?