[英]How to understand this use of 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);
}
}
我發現編譯很奇怪,因為沒有Class<T>
定義。 關於這個的故事是什么? 它在我的書中說T
是類型參數,但我怎么知道何時使用它?
你可以用它來租車,自行車......你可以像這樣直接使用它:
RentalGeneric<Car> carRental = new RentalGeneric<Car>(10, aList);
然后,當你做getRental
它會返回一個Car
對象。 你將能夠用returnRental(aCar);
放回一輛Car
returnRental(aCar);
或者你可以創建一個擴展RentalGeneric<Car>
的CarRental
類。
對於您想要租用的任何物品,情況也是如此。
T是泛型類型。 它將在創建RentalGeneric
類的Object時初始化。
RentalGeneric<Double> rgS =new RentalGeneric<Double>(10, new ArrayList<Double>());
RentalGeneric<Integer> rgS =new RentalGeneric<Integer>(10, new ArrayList<Integer>());
你是對的,代碼中沒有直接的T
定義。 但是,可以在此代碼之外的運行時找到它。 確實在某處您創建了列表的實例。 當你這樣做時,你必須提供類型信息,例如
List<String> mylist = new ArrayList<String>();
這里我們定義列表包含字符串。 現在我們調用您的代碼:
new RentalGeneric(123, mylist)
mylist
是一個字符串列表,所以RentalGeneric
的類型參數也是String
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.