我认为您误解了Java泛型的工作原理:
<T extends Foo> T method() {这意味着该方法的 调用者 可以选择
Foo他们想要的任何子类型并提出要求。例如,你可以写
Foo foo = new Foo();SubFoo subfoo = foo.<SubFoo>method();
…并期望
SubFoo返回,但是您的
method实现无法返回
SubFoo,而这将失败。(我不会讲Scala,但是我认为这意味着您的Scala实现实际上不是“等效的”。)
如果你希望你的方法能够返回的子类型
Foo的 实现 选,而不是调用者,那么就写
Foo method() { return this;}


