当前位置: 首页 > 编程笔记 >

Java中的方法重载和空错误

逄边浩
2023-03-14
本文向大家介绍Java中的方法重载和空错误,包括了Java中的方法重载和空错误的使用技巧和注意事项,需要的朋友参考一下

在Java中重载方法时,这些函数具有相同的名称,并且该函数的参数数目相同。在这种情况下,如果参数不是原始的并且具有接受空值的能力,则在使用空值调用该函数时,编译器会感到困惑,因为它无法选择其中一个,因为它们都具有接受空值的能力。这会导致编译时错误。

示例

以下是显示相同内容的示例-

public class Demo {
   public void my_function(Integer i) {
      System.out.println("The function with integer as parameter is called ");
   }
   public void my_function(String name) {
      System.out.println("The function with string as parameter is called ");
   }
   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("The function with integer as parameter is called ");
   }
   public void my_function(String name) {
      System.out.println("The function with string as parameter is called ");
   }
   public static void main(String [] args) {
      Demo my_instance = new Demo();
      String arg = null;
      my_instance.my_function(arg);
   }
}

输出结果

The function with string as parameter is called

名为Demo的类包含名为“ my_function”的函数,该函数采用整数作为参数。相同的函数已重载,并且参数是字符串。当调用这两个功能中的任何一个时,相关的消息就会打印在屏幕上。在main函数中,将创建Demo类的实例,并为字符串类型的参数分配一个空值。现在,将调用此实例,并将先前定义的参数作为参数传递。

 类似资料:
  • 我有以下代码片段: 如果我调用foo(null)为什么没有歧义?为什么程序调用foo(字符串x)而不是foo(对象x)?

  • 本文向大家介绍Java Varargs中的方法重载和歧义,包括了Java Varargs中的方法重载和歧义的使用技巧和注意事项,需要的朋友参考一下 在Java中使用变量参数时存在歧义。发生这种情况是因为两种方法绝对可以有效地被数据值调用。因此,编译器不知道该调用哪种方法。 示例 输出结果 名为Demo的类定义了一个名为“ my_fun”的函数,该函数采用可变数量的浮点值。使用“ for”循环将这些

  • 本文向大家介绍简单谈谈Java中的方法和方法重载,包括了简单谈谈Java中的方法和方法重载的使用技巧和注意事项,需要的朋友参考一下 今天我们就讲一点内容,来说说Java中的方法和方法重载以及需要注意的一些地方; 方法: Java的方法类似与其他语言的函数,是一段用来完成特定功能的代码片段, 声明格式: [修饰符1 修饰符2 ....] ,返回值类型 方法名 (形式参数列表) { Java语句: -

  • 问题内容: 以下代码无法编译。 发出编译时错误。 对test的引用是模棱两可的,varargspkg.Main中的方法test(int …)和varargspkg.Main中的方法test(float …) 这似乎很明显,因为方法调用中的参数值可以提升为 如果任何一个或两个参数都带有或作为后缀,则会进行编译。 但是,如果我们用相应的包装器类型表示方法签名中的接收参数,如下所示 那么对该方法的调用不

  • 问题内容: 给出以下代码: 输出(意外)如下: 问题出在第一行,我希望与其他两行相同。此外,我发誓直到最近,编译器仍会为我的普通调用给出模糊的调用警告。但是,使用Java 5和6进行编译和测试会产生相同的结果。 这对我来说是一个重要的问题,因为我有很多代码都使用这种模式,即使用不同类型的重载“默认”参数来选择返回类型并推断所需的转换/解析。谁能解释这是怎么回事? 问题答案: Java始终以相同的方

  • Java 允许同一个类中定义多个同名方法,只要它们的形参列表不同即可。 如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载(overload)。 例如,在 JDK 的 java.io.PrintStream 中定义了十多个同名的 println() 方法。 这些方法完成的功能类似,都是格式化输出。根据参数的不同来区分它们,以进行不同的格式化处理和输出。它们之