如何确保在类中重新实现toString()方法?

k29*_*k29 7 java overriding tostring

假设我有一个接口和许多实现该接口的类.我想强制覆盖toString()每个类中的默认实现(也就是说,如果某些类不覆盖它,那么应该导致编译错误).

是否有可能实现这一目标?在界面体中声明public abstract String toString();(带或不带@Override注释)是合法的,但没有任何效果.

nul*_*ent 14

是的,有点.

protected abstract String internToString();
Run Code Online (Sandbox Code Playgroud)

然后

@Override
public String toString() {
 return internToString(); 
}
Run Code Online (Sandbox Code Playgroud)

在你的基类.


emo*_*ory 2

编写一个注解和注解处理器并在编译时使用它。

您的注释将如下所示:

public @ interface MustOverrideToString { }
Run Code Online (Sandbox Code Playgroud)

并且您的注释处理器将查找任何符合以下条件的类

  1. 使用 MustOverrideToString 注释扩展类
  2. 不覆盖 toString