1

これは2部構成の質問です。

2 つのクラスがAnimalありVehicleます。オブジェクトとしてインスタンス化します。Animalとの 2 つのインスタンス変数を含み、 とnumLegsのインスタンス変数を1 つ含みます。両方のクラスに getter と setter が含まれます。animalNameVehiclenumTires

またはのBoxいずれかを保持するジェネリック クラスがあります。AnimalVehicle

Arraylistのボックスを作成したいとします。上記のすべてBoxは、排他的 typeまたは排他Arraylist的 type を保持します。AnimalVehicle

例: もっぱら動物の場合、これは次のように見えます:

List<Box<Animal>> list = new ArrayList<Box<Animal>>(); 
list.add( new Box<Animal>( new Animal( "fluffy", 4 ) ) ); 

(1)。ボックスクラスはどのように見えるべきですか?

また、リストから動物に対して getter を実行したいとします。そのような:System.out.println(list.get(0).getName());

(2)。どうすればこれを適切に行うことができますか?

4

2 に答える 2

1

あなたが何を求めているのか正確にはわかりませんが、ジェネリックに型付けされたBoxクラスが必要な場合は、おそらく次のようにする必要があります。

public class Box<T extends SuperclassOfAnimalAndVehicle> {
  T myModeOfTransport;

  Box(T myModeOfTransport) {
    this.myModeOfTransport = myModeOfTransport;
  }

  public T getModeOfTransport() {
    return myModeOfTransport;
  }
}

この行:list.get(0).getName()しかし、しません。を含むオブジェクトを取得する必要がありBoxます。したがって、私の例を使用すると、 であり、両方にメソッドがあると仮定しますlist.get(0).getModeOfTransport().getName()VehicleAnimalgetName()

そうは言っても、なぜこれが必要なのか、私は本当に混乱しています。全体像を説明していただければ、より完全な回答が得られるかもしれません。

于 2012-05-05T22:13:41.797 に答える