問題

我想將原語轉換為字串,我嘗試了:

 myInt.toString();
 

這失敗並出現錯誤:

 int cannot be dereferenced
 

現在,我得到原語不是引用型別(即,而不是物件),因此無法有方法.但是,Java 5引入了autobout和unbout(la C#....我從未在C#中喜歡這個,但這在點旁邊).所以使用autobout,我希望上面的myInt轉換為Integer,然後呼叫toString().

此外,我相信C#允許這樣的呼叫,除非我記得錯誤.這只是Java的autobout / unbout規範的一個不幸缺陷,還是有很好的理由嗎?

  最佳答案

Java autobouck / unbouck不允許您取消引用原始,所以編譯器防止它.您的編譯器仍然知道myInt為原始.在 jcp.org 有關於這個問題的論文.

自動拳擊在分配或引數傳遞期間主要有用 —— 允許您將原語作為物件傳遞(或反之亦然),或將原語分配給物件(或反之亦然)。

所以不幸的是,你必須這樣做:(kudos Patrick,我轉向你的方式)

 Integer.toString(myInt);
 

  相同標籤的其他問題

javaautoboxing