2012-10-27 28 views
2

偏好一個方法到另一個(通過編譯器)的正式原因是什麼? 爲什麼它選擇字節等第一個我知道int可以代表字節,但也浮動。它爲什麼如此正式?什麼標準編譯器選擇重載方法之一

public class MethodCurrier { 

    public void setValue(int wrt){//naglowek 
     System.out.println("Typ int "+ wrt); 
    } 
    public void setValue(float wrt){//naglowek 
     System.out.println("Typ float "+ wrt); 
    } 
    public static void main(String[] args) { 
     MethodCurrier currier = new MethodCurrier(); 
     currier.setValue(4);//int 
     currier.setValue(2.3f);//float 
     currier.setValue('c');//char 
     currier.setValue((byte)4); 

    } 
} 
+1

面試問題?你有工作嗎? –

回答

5

Java語言規範defines此如下:

如果不止一個成員方法既方便和適用於方法調用,就必須選擇一個提供運行時的描述符方法調度。 Java編程語言使用選擇最具體方法的規則。

非正式的直覺是,如果由第一個方法處理的任何調用可以傳遞到另一個沒有編譯時類型錯誤的方法,那麼其中一個方法比另一個更具體。

在你的情況下,該int方法比float方法更具體的,因爲一個int可以implictly轉換爲float,但是反之則不行。

相關問題