假设我有一个接口和许多实现该接口的类。我想在每个类中强制执行toString()
的默认实现(也就是说,如果某些类不覆盖它,那么应该导致编译错误)。
有可能实现这一目标吗?在界面体中声明public abstract String toString();
(带或不带@Override
注释)是合法的,但没有任何效果。
答案 0 :(得分:14)
protected abstract String internToString();
然后
@Override
public String toString() {
return internToString();
}
在您的基类中。
答案 1 :(得分:2)
编写注释和注释处理器并在编译期间使用它。
您的注释将如下所示:
public @ interface MustOverrideToString { }
并且您的注释处理器将查找
的任何类答案 2 :(得分:1)
我认为你不需要在特定的类中声明方法toString()
的实现。
答案 3 :(得分:0)
如果您创建abstract
课程,则不需要另外一种方法:
public abstract class Base{
public abstract String toString();
}
...
public class Sub extends Base{} //will not compile