这就是例子。
class ParentReturnType {}
class ChildReturnType extends ParentReturnType {}
class Parent {
ParentReturnType foo() {...}
}
class Child<R extends ChildReturnType> extends Parent {
@Override
R foo() {...}
}
对于 class Child,javac产生两个名为 的方法foo:
- 第一个
foo()返回ChildReturnType,它的主体是我们在Child.foo() - 第二个
foo()返回ParentReturnType,它只是调用第一个foo()
我不太明白为什么javac会产生两个版本的foo().
我相信foo()返回ParentReturnType的一个版本及其在(在源代码中)定义的主体R foo()就足够了。