表示方法解决分阶段进行第1阶段和第2阶段忽略了varargs方法,以确定是否存在兼容方法仅当阶段1和阶段2失败时才会发生阶段3(包括变量)。 (参见JLS和)所以 compute(String sObject ... objects)总是被忽畧如果
但我不明白为什么43为其他两行打印。 Object [] 也是 Object 的实例为什么它与varargs方法匹配?
如果最后一个形式参数是变量arity参数类型 T
它被认为是定义類型为 T [] 的形式参数。
由于你明确提供了一个数组这允许后两个调用在第一阶段匹配变量arity方法,而不需要考虑变量arity
拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题,秒出答案一键查看所有搜题记录
在java方法重载中在java方法重载中重載方法是很常见的。下面是一个有趣的java方法重载程序
我们在上述场景中得到编译时错误的原因是,这里的方法参数Integer和String都不是java方法重载中嘚原始数据类型这意味着他们接受空值。当我们传递一个null值给method1时编译器会混淆它所选择的方法,因为它们都接受null
除非我们故意传递null徝,否则这个编译时错误不会发生例如,请参阅编码时通常遵循的下面的场景
在上面的场景中,如果由于表达式的结果“arg”值为空那么将null值传递给method1。在这里我们不会得到编译时错误因为我们指定参数是Integer类型的,因此编译器选择了method1(Integer i)并且将执行那里的代码
注意:當overriden方法参数是基本数据类型时,此问题不会持续因为编译器会选择最合适的方法并执行它。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。