假设我有一个接口和许多实现该接口的类。我想强制覆盖toString()
每个类中的默认实现(也就是说,如果某些类不覆盖它,那应该会导致编译错误)。
有可能实现吗?在接口主体中声明public abstract String toString();
,无论有无@Override
注解,都是合法的,但没有任何作用。
假设我有一个接口和许多实现该接口的类。我想强制覆盖toString()
每个类中的默认实现(也就是说,如果某些类不覆盖它,那应该会导致编译错误)。
有可能实现吗?在接口主体中声明public abstract String toString();
,无论有无@Override
注解,都是合法的,但没有任何作用。
是的,有点。
protected abstract String internToString();
进而
@Override
public String toString() {
return internToString();
}
在你的基类中。
编写一个注解和注解处理器,并在编译期间使用它。
您的注释将如下所示:
public @ interface MustOverrideToString { }
并且您的注释处理器将寻找任何类
我认为您不需要将方法的实现声明toString()
到特定类中。
如果您创建abstract
类,则不需要另一种方法:
public abstract class Base{
public abstract String toString();
}
...
public class Sub extends Base{} //will not compile