當調用一個特定的方法時,我讀到Wide和Box是首選,爲什麼不是Box和Wide。任何人都可以用一個小例子來解釋我爲什麼。爲什麼編譯器會嘗試Wide和Box爲什麼不是Box和Wide?
2
A
回答
7
加寬:呼叫具有較窄參數類型的方法。
public class Test {
static void doIt(long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK: int i is widened to long
}
}
拳擊:調用一個方法,該方法需要帶有基本參數的包裝類型。
public class Test {
static void doIt(Integer i) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK: int i is boxed to Integer
}
}
加寬,然後拳擊:不起作用。
public class Test {
static void doIt(Long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // FAILS. Cannot widen int to long and then box to Long
}
}
拳擊,然後加寬:只適用於擴大到超類型。
public class Test {
static void doIt(Number n) { }
static void go(Long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK. i is boxed to Integer, and Number is a supertype of Integer
go(i); // FAILS: Long is not a supertype of Integer
}
}
2
答案很簡單:您只可以拓寬元。因此,編譯器必須在加載之前加寬。
0
相關問題
- 1. 爲什麼在Chrome和Firefox中不會覆蓋-webkit-box-flex?
- 2. Box和UnBox是什麼意思?
- 3. QCombo Box爲什麼不起作用?
- 4. 嵌入式Facebook Like-Box不會讓我風格。爲什麼?
- 5. 爲什麼在css box modell中100%寬度不是100%?
- 6. 爲什麼Box/Option在LiftWeb/Scala中不是Exception?
- 7. VB.net界面不會編譯,爲什麼?
- 8. 什麼是IE的Box模型?
- 9. 爲什麼編譯器不會拋出編譯錯誤?
- 10. 爲什麼不編譯?
- 11. 爲什麼不編譯?
- 12. 爲什麼不編譯?
- 13. 爲什麼不能編譯?
- 14. 爲什麼不編譯?
- 15. `this.type`:爲什麼不編譯?
- 16. <T: Trait> Box <T>和&Trait/Box <Trait>有什麼區別?
- 17. 爲什麼ItemCheck CheckList Box的事件總是一個背後?
- 18. 將Box [Elem]轉換爲LiftResponse的提升方式是什麼?
- 19. 編譯器爲什麼不優化?
- 20. R-LaTeX Wide table
- 21. OS爲什麼使用「path」&爲什麼編譯器和JVM使用「classpath」?
- 22. 爲什麼-webkit-box-flex屬性不起作用?
- 23. 爲什麼編譯器不能區分typedef和non-typedef?
- 24. 爲什麼會這樣編譯?
- 25. 調試和編譯有什麼區別?
- 26. ASP.NET嘗試編譯註釋的代碼行。爲什麼?
- 27. 什麼是Fortran編譯器?
- 28. 2D Box Collisions - 我做錯了什麼? (C++)
- 29. HttpClient是什麼和爲什麼?
- 30. 什麼是clojure.lang.Var.getRawRoot和它爲什麼叫?
沒有任何語境,我們沒有希望回答這個問題。什麼是「寬」和「盒」?如果你能給出一個你認爲它意味着什麼的小例子,那真的會有所幫助。 – 2010-01-25 16:23:46
+1模糊 – willcodejavaforfood 2010-01-25 16:26:00
我非常肯定,當涉及到Java時,加寬和拳擊是衆所周知的術語。詮釋爲長會擴大,詮釋整數將拳擊。我覺得向網站上聲譽最高的人解釋這一點非常荒謬。 – Powerlord 2010-01-25 16:42:37