2
比方说,我有一个通用的构建器类型:扩展抽象方法与泛型参数(即必须扩展泛型类)在Java中
public abstract class Builder<T> {
public abstract T build();
}
然后一个Foo类和它的建设者,它扩展生成器:
public class Foo {
// stuff
}
public class FooBuilder extends Builder<Foo> {
public Foo build() {
return new Foo();
}
}
我也有一个抽象的,一般的处理程序类型:
public abstract class Handler<T> {
public abstract <U extends Builder<T>> void handle(U builder);
}
终于FooHandler:
public class FooHandler extends Handler<Foo> {
@Override
public void handle(FooBuilder builder) {
// do something
}
}
的问题是,FooHandler的句柄()不被认为是压倒一切的处理程序的handle():Method does not override method from its superclass
。是否有可能做到这一点?
良好,即工作。现在要弄清楚为什么在这个重构之后测试失败了...... 虽然,看起来奇怪的是,FooHandler现在在语义上是一个Handler而不仅仅是Foos,而是FooBuilders? – dysfunction
@dysfunction Nah,我不会那样说的。这是一个'FooHandler'_through_'FooBuilder's。 –