使用“null”引用调用重载函数
让我们说我有以下重载函数
public class Test { public static void funOne(String s){ System.out.print("String function"); } public static void funOne(Object o){ System.out.print("Object function"); } public static void main(String[] args) { funOne(null); } }
为什么funOne(null)
使用String
参数签名调用该方法? 这里重载的优先级是什么?
在这种情况下,类层次结构中较低的类将具有优先权。 换句话说,更具体的类类型,在这种情况下将是String
,因为String
在技术上扩展了Object
。
如果您有以下内容
public class A { ... } public class B extends A { ... }
然后,当您定义重载方法时,如下所示:
public void test(A object) { ... } public void test(B object) { ... }
然后调用test(null)
将调用第二个方法,因为B
在类层次结构中较低。
您的问题在这里有更全面的答案参考。
此外,您可以通过执行以下操作强制调用特定方法:
funOne((Object) null);