2011-05-07 42 views
0

雖然除去了我認爲是不必要的代碼整理我的項目,我刪除了形式我刪除了必要的構造,但它仍然編譯和運行

public MyClass(int a, int b) 

的構造在保持其他構造

public MyClass(double c, double d) 

有到INT打電話,int構造,我沒有注意到,但它編譯和運行,但調用的雙重,雙版本,挺正常引起我寫拋出一個異常處理程序。 MyClass不擴展任何其他類。

Java通過什麼規則導致這種不可見的自動轉換髮生?

+2

,因爲一個'int'值可以分配給一個'double'變量。 – asgs 2011-05-07 13:50:50

回答

3

這是一個Widening Primitive Conversion。由於您可以在不丟失任何信息的情況下將int轉換爲double,因此Java語言無形地執行此操作。

1

的方法重載,最具體的方法被調用,所以如果你有foo(int, int)foo(double, double)和你打電話foo(1,2)然後foo (int, int)將被調用。但是因爲1,2也可能是雙打的,如果你沒有foo(int, int),則會調用foo(double, double)

相關問題