Java 中的方法重载和空值错误

java 8server side programmingprogramming

在 Java 中,当方法重载时,函数具有相同的名称,并且函数的参数数量也相同。在这种情况下,如果参数是非原始类型的,并且能够接受空值,那么当使用空值调用该函数时,编译器会感到困惑,因为它无法选择其中任何一个,因为它们都可以接受空值。这会导致编译时错误。

示例

下面是一个显示相同 − 的示例

public class Demo {
   public void my_function(Integer i) {
      System.out.println("调用以整数为参数的函数 ");
   }
   public void my_function(String name) {
      System.out.println("以字符串作为参数的函数被调用");
   }
   public static void main(String [] args) {
      Demo my_instance = new Demo();
      my_instance.my_function(null);
   }
}

输出

/Demo.java:15: error: reference to my_function is ambiguous
my_instance.my_function(null);
^
both method my_function(Integer) in Demo and method my_function(String) in Demo match
1 error

以下已演示此类情况的解决方案 −

示例

public class Demo {
   public void my_function(Integer i) {
      System.out.println("调用以整数为参数的函数 ");
   }
   public void my_function(String name) {
      System.out.println("调用以字符串为参数的函数 ");
   }
   public static void main(String [] args) {
      Demo my_instance = new Demo();
      String arg = null;
      my_instance.my_function(arg);
   }
}

输出

以字符串为参数的函数被调用

名为 Demo 的类包含一个名为"my_function"的函数,该函数接受一个整数作为参数。该函数被重载,其参数为字符串。调用这两个函数中的任何一个时,屏幕上都会打印相关消息。在主函数中,创建了 Demo 类的一个实例,并将一个字符串类型的参数赋值为 null。现在,调用此实例,并将先前定义的参数作为参数传递。


相关文章