为什么和如何这个Java代码编译?
发布时间:2020-12-14 05:05:18 所属栏目:Java 来源:网络整理
导读:参见英文答案 Which overload will get selected for null in Java?3 以下代码打
参见英文答案 >
Which overload will get selected for null in Java?3
以下代码打印“String” public class Riddle { public static void main(String[] args) { hello(null); } public static void hello(Object o) { System.out.println("Object"); } public static void hello(String s) { System.out.println("String"); } } 为什么代码编译?不是空虚吗? 例如,以下代码不会因为模糊签名而编译. public class Riddle { public static void main(String[] args) { hello(null); } public static void hello(Object o) { System.out.println("Object"); } public static void hello(Integer o) { System.out.println("Integer"); } public static void hello(String s) { System.out.println("String"); } } 有人可以解释为什么第一个例子可以编译没有歧义的错误? 解决方法
在第二种情况下,编译器无法在使用Integer的方法和使用String的方法之间进行编译,而在第一种情况下,编译器可以计算出来.
参考:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |