的Java 並不需要猜測調用哪個方法。它已經知道在編譯時要調用的方法,它是由在傳遞的參數的類型決定
運行這一點,看看會發生:
public static void main(String[] args) {
repeated((byte) 1); // casting int 1 to byte, so repeated(byte) is invoked
repeated(1); // 1 is int, so repeated(int) is invoked
repeated((int) 1.0); // casting double 1.0 to int, so repeated(int) is invoked
repeated((int) 1L); // casting long 1 to int, so repeated(int) is invoked
repeated(1L); // 1L is long number, so repeated(long) is invoked
repeated((long) 1); // casting int 1 to long, so repeated(long) is invoked
repeated((long) 1.0); // casting double 1.0 to long, so repeated(long) is invoked
repeated(1.0); // 1.0 is double so repeated(double) is invoked
repeated((double) 1); // casting int 1 to double, so repeated(double) is invoked
repeated((double) 1L); // casting long 1 to double, so repeated(double) is invoked
repeated(new Integer(1)); // new Integer(1) is Integer so repeated(Integer) is invoked
repeated((Integer) 1); // casting int 1 to Integer, so repeated(Integer) is invoked
// conversion from int to Integer and vice-versa are natively supported
repeated(new Object()); // new Object() is Object, so repeated(Object) is invoked
repeated((Object) new Integer(1)); // casting Integer to Object, so repeated(Object) is invoked
// upcasting to supertype (Integer extends Object)
}
public static void repeated(byte a) {System.out.println("repeated(byte)");}
public static void repeated(int a) {System.out.println("repeated(int)");}
public static void repeated(long a) {System.out.println("repeated(long)");}
public static void repeated(double a) {System.out.println("repeated(double)");}
public static void repeated(Integer a) {System.out.println("repeated(Integer)");}
public static void repeated(Object a) {System.out.println("repeated(Object)");}
很抱歉,但它不是真正清楚你」在這裏再問一次。 –
它直接用於重複(int),因爲int文字的類型是int,所以它完全匹配。 –
我想了解Java如何選擇方法以及如果需要轉換類型的次數。像int - > Integer - > Integer ... - > Object? – Genaut