方法Overloading和null参数选择
考虑以下代码段:){ MoneyCalc问题= new MoneyCalc(); Question.Method(null); } } [
为什么将null值传递到Overloaded方法方法调用方法(string)版本?null是一个特殊的常数值,该值代表一个对象。它不是任何特定类型的值,但是可以将其分配给任何参考类型的变量,包括对象和字符串。
当方法调用以null作为参数作为参数,编译器选择方法(字符串)版本,因为它比方法(对象)版本更具体。根据Java语言规范(JLS),根据其适用性和特异性选择了最具体的过载。的适用性是指在没有编译时错误的情况下是否可以将参数传递给该方法。在这种情况下,null适用于这两种方法,因为它可以分配给对象和字符串类型的变量。
public class MoneyCalc { public void method(Object o) { System.out.println("Object Verion"); } public void method(String s) { System.out.println("String Version"); } public static void main(String args[]) { MoneyCalc question = new MoneyCalc(); question.method(null); } }因此,编译器选择方法(string)版本为其更具体且适用于提供的参数,该参数是null引用。 MoneyCalc类,将发生汇编错误。这是因为在这种情况下,方法(字符串)或方法(StringBuffer)都不会比其他方法更具体,从而导致方法选择中的歧义。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3