Вам не нужно переопределять, вам нужно передать обработчик методу.Вы должны выбрать функциональный интерфейс, который наилучшим образом соответствует вашим потребностям.
Если обработчик не принимает аргументов и не возвращает значения, это может быть Runnable
.
Если он действительно выдает значение (SomeObject
?), Это может быть Supplier<SomeObject>
.
Тогда вы можете написать один static
метод, который вызывает метод выбранного функционального интерфейса.
Например:
public static SomeObject example (Supplier<SomeObject> handler) {
// Create instance of Debug Log class
// Log first entry
try {
return handler.get();
} catch (Exception e) {
// Other generic calls
}
// you might need some return statement here too
}
Чтобы выполнить этот метод, вы можете передать ему ссылку на метод, который возвращает SomeObject
.
Например:
SomeObject result1 = example(SomeClass::someHandlerMethodThatReturnsSomeObject);
SomeObject result2 = example(SomeOtherClass::someOtherHandlerMethodThatReturnsSomeObject);
Это предполагает someHandlerMethodThatReturnsSomeObject
и someOtherHandlerMethodThatReturnsSomeObject
являются статическими методами, которые не имеют аргументов и возвращают SomeObject
.Фактические вызовы могут меняться в зависимости от того, где реализована фактическая логика ваших обработчиков.