java - public <T> T findOne(T record) 這是什么意思
問題描述
是代表返回的類型可以是<T> 或者 T 嗎
問題解答
回答1:樓上已經(jīng)回答的很專業(yè)了...我就白話的方式回答一下,哈哈比如平常看到一個(gè)方法可能是這樣的
public BigCar find(Long carId)
這個(gè)方法編譯沒問題的前提是BigCar是一個(gè)已存在的類嘛,想表述根據(jù)一個(gè)車的id查詢大車BigCar
這時(shí)你還想寫一個(gè)小車SmallCar的查詢方法,估計(jì)就應(yīng)該先創(chuàng)建一個(gè)SmallCar,然后寫一個(gè)查詢方法
public SmallCar find(Long carId)
沒問題,這個(gè)時(shí)候你要是想任性說寫一個(gè)不管是大車還是小車,都是根據(jù)id查詢的方法,任性的寫法就是
public XXX find(Long carId)
那編譯器肯定就要犯愁了,你這個(gè)XXX是什么鬼啊,沒有這個(gè)類啊敲黑板!!!重點(diǎn)來了這個(gè)時(shí)候就有個(gè)語法哈,你想要表明這個(gè)XXX只是一個(gè)代指,但是具體是啥不知道,那就用<>表示,里面可以寫n個(gè)代指的東西,中間用逗號隔開,這樣就寫成了
public <XXX> XXX find(Long carId)
所以啊,<>只是代表一個(gè)定義符,里面定義了一堆變量,方便后續(xù)使用而已你在方法中定義,那這個(gè)變量的適用范圍就在這個(gè)方法里你要是在類里定義,嘿嘿,那這個(gè)變量整個(gè)類里都可以用哦,比如:
public class Car<X, XX>{ X x; XX xx; Long id; public X findX(){return x; }}回答2:
java的泛型方法的寫法,語法規(guī)定返回類型是T<T>是表明這是個(gè)泛型方法(我猜是和編譯有關(guān)的,畢竟Java泛型是擦除方式的
相關(guān)文章:
1. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?2. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?3. Java:密碼包(加密和解密)。無效的密鑰錯(cuò)誤4. css - 微信小程序點(diǎn)擊展開,再次點(diǎn)擊收回5. 點(diǎn)擊頁面就自動輸入到mysql.求解6. macos - mac下docker如何設(shè)置代理7. css - vue.js的vue單文件組件style中的scoped屬性無效8. angular.js - 在ng-option 里使用過濾器無效9. node.js - 求問nw.js開發(fā)桌面版,其js計(jì)算性能如何?10. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?
