【发布时间】:2014-04-02 22:03:34
【问题描述】:
public class Animal {}
public class Bird extends Animal {}
public class Mamal extends Animal {}
public class Human extends Mamal {}
public class Main {
public void Hungry(Mamal mamal){
System.out.println("Mammal");
}
public void Hungry(Human human){
System.out.println("Human");
}
public void Hungry(Bird bird){
System.out.println("Bird");
}
public static void main(String a[]){
Main main = new Main();
main.Hungry(null);
}
编译器说 Hungry(Mamal) 方法不明确。 我希望执行“人类”方法,因为它是最低级别。我没能从http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12找到模棱两可的原因
【问题讨论】:
-
" 我希望执行 "Human" 方法" 因为 null 什么时候是
Human实例? -
@Sergi:按照惯例,是的——但这不是语言规则的一部分,这就是这个问题的意义所在。
-
@m0skit0:
null文字可转换为任何类类型。 -
null 不是实例。这只是一个值。
-
请不要将您的方法名称大写。
标签: java