これがその例です。
class ParentReturnType {}
class ChildReturnType extends ParentReturnType {}
class Parent {
ParentReturnType foo() {...}
}
class Child<R extends ChildReturnType> extends Parent {
@Override
R foo() {...}
}
classChild
に対して、javac
という名前の 2 つのメソッドを生成しますfoo
。
- 最初は を
foo()
返しますChildReturnType
。その本体は で定義したものですChild.foo()
- 2 番目は を
foo()
返しますParentReturnType
。これは単純に最初の呼び出しを呼び出しますfoo()
javac
の 2 つのバージョンを生成する理由がよくわかりませんfoo()
。
(ソースコードで) で定義された本体foo()
で返される1 つのバージョンで十分だと思います。ParentReturnType
R foo()