Java 定义要重写的方法

Java 定义要重写的方法,java,Java,我有一个经常创建的方法,如下所示: public static SomeObject example () { // Create instance of Debug Log class // Log first entry try { // Call specific handler relating to this endpoint } catch (Exception e) { // Other generic calls } } 我注意到每次创建端

我有一个经常创建的方法,如下所示:

public static SomeObject example () {
  // Create instance of Debug Log class
  // Log first entry
  try {
     // Call specific handler relating to this endpoint
  } catch (Exception e) {
    // Other generic calls
  }
}
我注意到每次创建端点时都在复制完全相同的方法。每个端点之间唯一的区别是调用的特定处理程序

基本上,我只希望能够定义此方法一次,覆盖它以更改调用的处理程序名称,其他所有内容保持不变


这可能吗?

您不需要重写,需要将处理程序传递给方法。您应该选择最适合您需要的功能接口

如果处理程序不接受任何参数,也不返回任何值,则它可以是
可运行的

如果它确实产生了一个值(
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 result1 = example(SomeClass::someHandlerMethodThatReturnsSomeObject);
SomeObject result2 = example(SomeOtherClass::someOtherHandlerMethodThatReturnsSomeObject);

这是假设返回SSomeObject的
SomeHandlerMethod
和返回SSomeObject的
SomeOtherHandlerMethod
是没有参数且返回
SomeObject
的静态方法。实际调用可能会发生变化,具体取决于处理程序的实际逻辑在何处实现

你能让处理程序成为函数的参数吗?你不能重写静态方法。您可以做的一件基本事情是使此方法接受处理程序类型的参数。不要使您的方法成为静态的,或者只传递具有处理程序方法的类型的实例。例如,
public static SomeObject example(TypeWithHandlerMethod obj){…尝试{obj.handle(…);}…}
谢谢您的帮助谢谢您的帮助!