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对象。你就可以放回一个CarwithreturnRental(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的类型参数String也是。

于 2012-11-13T08:03:08.343 回答