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

时间:2012-12-01 20:29:22

标签: java override tostring

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

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

4 个答案:

答案 0 :(得分:14)

是的,有点。

protected abstract String internToString();

然后

@Override
public String toString() {
 return internToString(); 
}

在您的基类中。

答案 1 :(得分:2)

编写注释和注释处理器并在编译期间使用它。

您的注释将如下所示:

public @ interface MustOverrideToString { }

并且您的注释处理器将查找

的任何类
  1. 使用MustOverrideToString注释扩展一个类
  2. 不会覆盖toString

答案 2 :(得分:1)

我认为你不需要在特定的类中声明方法toString()的实现。

答案 3 :(得分:0)

如果您创建abstract课程,则不需要另外一种方法:

public abstract class Base{
    public abstract String toString();
}

...

public class Sub extends Base{} //will not compile
相关问题