Java - проверка существования метода вместо NoSuchMethodException - PullRequest
0 голосов
/ 04 июня 2019

В моем коде есть метод, который должен вызывать метод 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);
}

Что ты думаешь лучше?

1 Ответ

2 голосов
/ 04 июня 2019

Реальный вопрос в том, действительно ли здесь необходима переработка.изучение крутых трюков и умение размышлять - это здорово и важно для разработчика, и оно поможет вам понять многое.но это не всегда правильное решение.возможно, вам просто нужно иметь в интерфейсе что-то вродеможет летать на ClassCastException, если объект, который у вас есть в вашем распоряжении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...