是否有可能在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
的新文件)?
答案 0 :(得分:1)
将其定义为扩展所需类的内部类,然后相反地声明它。
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");
}
}