コードサンプルから始めましょう。これを行うことができればと思います。Javaのジェネリックは、C <T extends MyClass <Z>>メソッドはZを返す必要があります
MyOtherClassは、一般的な
class MyOtherClass<Z>{}
ですので、私は、MyOtherClass
class C<T extends MyOtherClass<Z>> {
Z myTypeOfReturnMethod() { return doStuff(); }
}
あいにくのZを取得したいと思い、私の知る限り、私が指定することはできませんし、唯一の有効な文法だろうbe
class C<T extends MyOtherClass> {
???MyOtherClass.Z??? myTypeOfReturnMethod() { return doStuff(); }
}
これを行うにはどうすればよい方法がありますか? Cは2つのジェネリックを持つことができますが、それは一種の繰り返しでエラーが発生しやすいです。
class C<Z, T extends MyOtherClass<Z>> {
// ...
}
これは1があなたのtypedeclarationsの冗長性として認識する可能性が何かを意味しますが、少なくともあなたを実際:
これはなぜ冗長になるのでしょうか。 – shmosel
@shmosel調整された処方といくつかの情報を追加;) – Vogel612
まだそれは非常に冗長だとは思わない。そして私は ''お勧めしません? 'Z 'が[PECS](http://stackoverflow.com/questions/2723397/what-is-pecs-producer-extends-consumer-super)に従ってプロデューサーであることが明らかでない限り、Zを延長する。 – shmosel