我不習慣將原始物體數據類型投射到物體上。看到了一些這樣的代碼:正在投射原始物體vs創建原始物體
public static int CompareAges(Person p1, Person p2) {
Integer age1 = p1.getAge();
return age1.compareTo(p2.getAge());
}
的age1
實例化顯得多餘,所以我試圖寫的代碼爲:
public static int CompareAges(Person p1, Person p2) {
return p1.getAge().compareTo(p2.getAge());
}
但是,這提出了一個編譯器錯誤,因爲p1.getAge()
是一個原始數據類型int
和而不是Integer
,這是一個對象。
直觀地說,我所做的:
public static int CompareAges(Person p1, Person p2) {
return ((Integer) p1.getAge()).compareTo(p2.getAge());
}
和它的工作!
問題:我錯過了什麼?自從我們什麼時候開始將鑄造原型作爲值類型?
由於賦值的轉換,'int'被拆箱到'Integer'對象中。 – Tunaki
@Tunaki:你的意思是裝盒?那麼,當我們嘗試投射一個整數時,編譯器推斷我們想要框起來? – displayName
@displayName是的,將一個'int'強制轉換爲一個'Integer'將原語裝入Object中。 – Tunaki