是否可以在Java中实现类似的功能?我的想法是使用匿名类向类添加方法,但这似乎行不通。
public class Abc {
private ErrorsTable expectedErrorsTable = new ErrorsTable() {
public ErrorsTable addError(String error) {
this.add(error); //ErrorsTable is just a disguised ArrayList
return this;
}
};
...
public void someMethod() {
expectederrorsTable.adError("abc");
}
}
绝对不能解释为什么这行不通。
expectedErrorsTable
的类型为ErrorsTable
,因此编译器无法知道实际上存在配备了addError(String)
的扩展实现。可以使用其他简单的方法来达到相同的效果(除了使用扩展了
ErrorsTable
的新类创建新文件之外)? 最佳答案
将其定义为扩展所需类的内部类,然后对其进行声明。
public class Abc {
private class ExpectedErrorsTable extends ErrorsTable {
public ErrorsTable addError(String error) {
this.add(error);
return this;
}
}
private ExpectedErrorsTable expectedErrorsTable = new ExpectedErrorsTable();
public void someMethod() {
expectedErrorsTable.addError("abc");
}
}