2

例:

interface Consumer<F extends FoodType>
interface Vegetarian extends Consumer<Grass>
interface Predator extends Consumer<Meat>

私は次のようなものが欲しいです:

class Feeder<C extends Consumer<F>>

クラス宣言F内で型パラメーターを使用します。Feeder目的は、情報を提供する型パラメーターのみを渡し、渡されたものから他の型パラメーターを取得することです。

new Feeder<Vegetarian>().buyFood(bluegrassIsGrassAndCouldNotBeMeat)
4

2 に答える 2

1

以下を使用できます。

  class Feeder<C extends Consumer<? extends FoodType>>

または単に:

  class Feeder<C extends Consumer<?>>

しかし、それらの間には違いがあります。あなたの質問から私が理解している限り(あまり明確ではありません)、これら2つのうちの1つが必要です。

于 2012-08-22T12:16:50.950 に答える
1

クラスが 2 つのジェネリック型を使用する場合は、依存していても 2 つのジェネリック パラメーターが必要になります。

class Feeder<C extends Consumer<F>, F extends FoodType>{}

もう少し柔軟にするのに役立つ場合があります。

class Feeder<C extends Consumer<? super F>, F extends FoodType>{}

(Josh Bloch は頭字語 PECS: Producer's extend; Consumer'sを使用していsuperます。)

于 2012-08-22T12:21:17.023 に答える