如何理解Java泛型的这种用法

Nik*_*ntz 6 java generics

在我的学习书中,有这个例子:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我发现编译很奇怪,因为没有定义Class<T>.关于这个的故事是什么?它在我的书中说的T是类型参数,但我怎么知道何时使用它?

Mic*_*gue 4

你可以用它来租汽车、自行车……你可以直接使用它,如下所示:

RentalGeneric<Car> carRental = new RentalGeneric<Car>(10, aList);
Run Code Online (Sandbox Code Playgroud)

然后当你这样做时,getRental它会返回一个Car对象。然后你就可以放回Car一个returnRental(aCar);

或者您可以创建一个CarRental扩展的类RentalGeneric<Car>

对于您想租用的任何物品也是如此。