Dop*_*ele 13 java grails groovy
我有一个抽象的父类,我希望它强制所有子类实现toString()方法.
但是放:
public abstract String toString();
Run Code Online (Sandbox Code Playgroud)
导致编译错误:
Repetitive method name/signature for method 'java.lang.String toString()' in class ...
Run Code Online (Sandbox Code Playgroud)
我相信这可能是由已经定义了toString的groovy引起的.
谢谢
kit*_*ril 17
这适合我.这是新的还是别人错过了?
public abstract class Filterable
{
@Override
public abstract String toString();
}
public class ABC extends Filterable
{
// Won't compile without toString();
}
Run Code Online (Sandbox Code Playgroud)
Ara*_*ram 12
该toString()是的一部分java.lang.Object,其已经为它的默认实现类.所以你基本上不能强迫子类实现它.如果你想强迫这种行为(不确定为什么)那么你可以做类似下面的事情
public class abstract SuperClass {
public abstract String myToString();
public String toString() {
return myToString();
}
}
Run Code Online (Sandbox Code Playgroud)
简答:不可能.答案很长:您可以通过执行以下操作来尝试解决此问题,在父类中实现:
public final String toString() {
getString();
}
public abstract String getString();
Run Code Online (Sandbox Code Playgroud)
这会导致子类需要实现"getString()"方法.但是,如果子类实现"getString()"方法,则子(孙)类的子项无法保证被强制实现该方法.例:
A is the parent class, with the getString() method.
B extends A, and implements the getString() method.
C extends B, doesn't have to implement the getString() method.
Run Code Online (Sandbox Code Playgroud)
希望有帮助:)
| 归档时间: |
|
| 查看次数: |
7047 次 |
| 最近记录: |