栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带空参数的Java方法分派

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带空参数的Java方法分派

您正在使用哪个Java版本?在1.6.0_11中,代码(粘贴在下面)可以编译并运行。

我敢肯定,为什么

foo(testVal)
会这样
foo(Object)

为什么原因

foo(null)
foo(String)
有点复杂。该常量
null
是type
nulltype
,它是所有类型的子类型。因此,这
nulltype
扩展了
String
,扩展了
Object

调用时,

foo(null)
编译器将查找具有最特定类型的重载方法。因为
String
更具体
Object
,所以这就是被调用的方法。

如果您有另一个与String一样特定的重载,

foo(Integer)
那么您将得到一个模棱两可的重载错误。

class NullType {  public static final void main(final String[] args) {    foo();  }  static void foo()  {    Object testVal = null;    foo(testVal);    // dispatched to foo(Object)    foo(null);    // compilation problem -> "The method foo(String) is ambiguous"     }  public static void foo(String arg) { // More-specific    System.out.println("foo(String)");  }  public static void foo(Object arg) { // Generic    System.out.println("foo(Object)");  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号