共通のインターフェイスを実装するオブジェクトがいくつかあります。シードの数を実装して返すAppleものがあるとしましょう。FruitsHasSeed
次に、クラスFruitProcessorを使用してサービス メソッドをここで呼び出します。次に、リンゴのリストのように、インターフェイスaddAll(List<HasSeed>)を実装するオブジェクトのリストを渡すことができると考えました。HasSeed
しかし、それはできず、コンパイラーは引数に適用できないと不平を言います。もう 1 つ: を に変更することはできませList<Apple>んList<HasSeed>。しかし、FruitProcessor には、オブジェクトの任意のリストを取得できるメソッドが必要であり、それgetSeeds()がどのオブジェクトであっても呼び出すことができます。
以下をどのように適応させることができますか?
class Fruit {};
class Apple extends Fruit implements HasSeed {
@Override
int getSeeds() {
return 5; //just an example
}
}
class FruitProcessor {
static void addAll(List<HasSeed> list) {
for (HasSeed seed : list) {
Sysout("the fruit added contained seeds: " + list.getSeeds());
}
}
}
class FruitStore {
List<Apple> apples;
FruitProcessor.addAll(apples); //The method addAll(List<HasSeed>) in the type FruitProcessor is not applicable for the arguments (List<Apple>)
}