6

私の学習本には、次の例があります。

import java.util.*;
public class RentalGeneric<T> {

  private List<T> rentalPool;

  private int maxNum;
  public RentalGeneric(int maxNum, List<T> rentalPool) {

  this.maxNum = maxNum;
  this.rentalPool = rentalPool;
}
public T getRental() {
  return rentalPool.get(0);
}
  public void returnRental(T returnedThing) {
    rentalPool.add(returnedThing);
  }
}

の定義がないため、コンパイルされるのは奇妙だと思いますClass<T>。これについての話は何ですか?私の本でTは、型パラメーター用であると書かれていますが、いつ使用するかをどのように知ることができますか?

4

3 に答える 3

4

車や自転車のレンタルに使用できます...次のように直接使用できます。

RentalGeneric<Car> carRental = new RentalGeneric<Car>(10, aList);

その後、実行getRentalするとオブジェクトが返されますCar。そして、あなたは元に戻すことができCarますreturnRental(aCar);

CarRentalまたは、 を拡張するクラスを作成することもできますRentalGeneric<Car>

レンタルしたいオブジェクトについても同じことが言えます。

于 2012-11-13T08:02:08.783 に答える
1

T はジェネリック型です。RentalGenericクラスのオブジェクト作成時に初期化されます。

RentalGeneric<Double> rgS =new RentalGeneric<Double>(10, new ArrayList<Double>());
RentalGeneric<Integer> rgS =new RentalGeneric<Integer>(10, new ArrayList<Integer>());
于 2012-11-13T08:00:17.847 に答える
0

Tあなたのコードには の直接的な定義はありません。ただし、実行時にこのコードの外で見つけることができます。実際、どこかでリストのインスタンスを作成します。それを行うときは、タイプ情報を提供する必要があります。

List<String> mylist = new ArrayList<String>();

ここでは、リストに文字列が含まれることを定義しました。次に、コードを呼び出します。

new RentalGeneric(123, mylist)

mylistは文字列リストなので、RentalGenericの type パラメータStringもそうです。

于 2012-11-13T08:03:08.343 に答える