При передаче параметра одному из перегруженных методов всегда выбирается наиболее специфичный, например:
public class Overload {
public void method(Object o) {
System.out.println("Object");
}
public void method(java.io.FileNotFoundException f) {
System.out.println("FileNotFoundException");
}
public void method(java.io.IOException i) {
System.out.println("IOException");
}
public static void main(String args[]) {
Overload test = new Overload();
test.method(null);
}
}
/**
* Output: FileNotFoundException
*/
Если среди перегруженных методов есть те, которые принимают объекты, находящиеся на одном уровне иерархии, код не скомпилируется:
public class Overload {
public void method(Object o) {
System.out.println("Object");
}
public void method(String s) {
System.out.println("String");
}
public void method(StringBuffer sb) {
System.out.println("StringBuffer");
}
public static void main(String args[]) {
Overload test = new Overload();
test.method(null); //The method method(Object) is ambiguous for the type Overload
}
}
По мотивам
http://habrahabr.ru/blogs/java/111189/
Комментариев нет:
Отправить комментарий