是代表傳回的型別可以是<T> 或 T 嗎
樓上已經回答的很專業了...我就白話的方式回答一下,哈哈比如平常看到一個方法可能是這樣的
public BigCar find(Long carId)
這個方法編譯沒問題的前提是BigCar是一個已存在的類嘛,想表述根據一個車的id查詢大車BigCar
BigCar
這時你還想寫一個小車SmallCar的查詢方法,估計就應該先創建一個SmallCar,然後寫一個查詢方法
SmallCar
public SmallCar find(Long carId)
沒問題,這時候你要是想任性說寫一個不管是大車還是小車,都是根據id查詢的方法,任性的寫法就是
public XXX find(Long carId)
那編譯器一定就要犯愁了,你這個XXX是什麼鬼啊,沒有這個類啊敲黑板! ! !重點來了這個時候就有個語法哈,你想要表明這個XXX只是一個代指,但是具體是啥不知道,那就用表示,裡面可以寫n個代指的東西,中間用逗號隔開,這樣就寫成了
XXX
public <XXX> XXX find(Long carId)
所以啊,只是代表一個定義符,裡面定義了一堆變量,方便後續使用而已你在方法中定義,那這個變量的適用範圍就在這個方法裡你要是在類別裡定義,嘿嘿,那這個變數整個類別裡都可以用哦,例如:
public class Car<X, XX>{ X x; XX xx; Long id; public X findX(){ return x; } }
java的泛型方法的寫法,語法規定返回類型是T是表明這是個泛型方法(我猜是和編譯有關的,畢竟Java泛型是擦除方式的
樓上已經回答的很專業了...我就白話的方式回答一下,哈哈
比如平常看到一個方法可能是這樣的
這個方法編譯沒問題的前提是
BigCar
是一個已存在的類嘛,想表述根據一個車的id查詢大車BigCar
這時你還想寫一個小車
SmallCar
的查詢方法,估計就應該先創建一個SmallCar
,然後寫一個查詢方法沒問題,這時候你要是想任性說寫一個不管是大車還是小車,都是根據id查詢的方法,任性的寫法就是
那編譯器一定就要犯愁了,你這個XXX是什麼鬼啊,沒有這個類啊
敲黑板! ! !重點來了
這個時候就有個語法哈,你想要表明這個
XXX
只是一個代指,但是具體是啥不知道,那就用表示,裡面可以寫n個代指的東西,中間用逗號隔開,這樣就寫成了
所以啊,
只是代表一個定義符,裡面定義了一堆變量,方便後續使用而已
你在方法中定義,那這個變量的適用範圍就在這個方法裡
你要是在類別裡定義,嘿嘿,那這個變數整個類別裡都可以用哦,例如:
java的泛型方法的寫法,語法規定
是表明這是個泛型方法(我猜是和編譯有關的,畢竟Java泛型是擦除方式的
返回類型是T