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。现在,调用此实例,并将先前定义的参数作为参数传递。