3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
整型文字(如1
)是 type 的表達(dá)式int
。
重載解析分多個(gè)階段進(jìn)行,尋找可以接受您傳遞的類(lèi)型的參數(shù)的方法。
如果存在單個(gè)重載,其中實(shí)際參數(shù)與形式參數(shù)具有相同的類(lèi)型,則調(diào)用該重載。
如果存在單個(gè)非可變參數(shù)重載,其中實(shí)際參數(shù)可以自動(dòng)轉(zhuǎn)換(例如通過(guò)加寬或取消/裝箱)為與形式參數(shù)相同的類(lèi)型,請(qǐng)調(diào)用它。
如果存在單個(gè)可變參數(shù)重載,其中實(shí)際參數(shù)可以自動(dòng)轉(zhuǎn)換為與調(diào)用它的形式參數(shù)相同的類(lèi)型。
否則,錯(cuò)誤。
這些階段依次應(yīng)用,一直持續(xù)到找到匹配項(xiàng)。
由于存在過(guò)載m1
這需要int
,匹配在階段1中發(fā)現(xiàn),使值的另一種類(lèi)型,需要的不是轉(zhuǎn)換發(fā)生。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
根據(jù)定義,該原始文字的類(lèi)型為 int。任何沒(méi)有小數(shù)點(diǎn)的數(shù)字文字都是int類(lèi)型,除非您將 al/L 放入其中:1L
將其轉(zhuǎn)換為 long。沒(méi)有 1 個(gè)“字節(jié)”文字,你必須去(byte) 1
那里。
編譯器尋找最合適的,并使用該方法接受一個(gè) int。
這就是全部。如果您想查看要調(diào)用的其他方法,例如將值轉(zhuǎn)換為 (long),或者開(kāi)始使用諸如 1.0 而不是 1 之類(lèi)的值。
關(guān)于您的評(píng)論:只有在需要時(shí)才會(huì)出現(xiàn)自動(dòng)化。但在您的情況下:A) 您使用的是int值 B) 有一個(gè) int-taking 方法。編譯器不會(huì)無(wú)緣無(wú)故地將整數(shù)轉(zhuǎn)換為長(zhǎng)整數(shù)!

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
自動(dòng)轉(zhuǎn)換僅在方法接受比輸入更寬的類(lèi)型時(shí)發(fā)生。例如,如果您刪除void m1(..)
除long
版本之外的所有功能。然后可以傳入一個(gè)整數(shù),整數(shù)會(huì)自動(dòng)加寬為long。
在您的示例中,有一個(gè)接受整數(shù)的方法,因此 java 將改用該方法,并且不會(huì)發(fā)生擴(kuò)大。
添加回答
舉報(bào)