有人告訴我,諸如此類的原始類型int沒(méi)有方法。.getClass().getName()當(dāng)用于類型變量int并返回包裝類“ ”時(shí),它是如何工作的Integer?這是自動(dòng)拳擊的例子嗎?int重要提示:這似乎只在將變量傳遞到泛型類時(shí)對(duì)我有用。然后從 main 方法調(diào)用泛型類中的方法。我正在使用這個(gè)通用類:public class gen< T > { private T thing; public gen(T thing) { this.thing = thing; } public String varType() { return thing.getClass().getName(); }}public class Driver() { int i = 5; gen g = new gen(i); System.out.println(g.getType());}輸出是:java.lang.Integer有人可以解釋一下這個(gè)過(guò)程的內(nèi)部運(yùn)作嗎?像這樣的事情是行不通的:public static void main(String args[]) { int i = 5; i.getClass().getName();}
1 回答

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
例如,通用類型參數(shù)T
不能是原語(yǔ)。對(duì)于原始類型,您可以使用相應(yīng)的包裝類。更具體地說(shuō),T
不能int
。
在您的情況下,編譯器會(huì)在調(diào)用中自動(dòng)將值裝箱為int
an?。Integer
new gen(i)
注 1:?gen
和new gen
是原始泛型,因?yàn)槟÷粤祟愋蛥?shù)。不要使用原始仿制藥。再說(shuō)了,如果你忽略它們又有什么意義呢?
注2:?Java命名規(guī)范是類名以大寫字母開(kāi)頭,所以類應(yīng)該命名為Gen
,而不是gen
。
添加回答
舉報(bào)
0/150
提交
取消