What is method overloading and null error in Java?

In Java, it's quite common to overload methods. Below is a stimulating Java program.

public class Test
{
	// Overloaded methods
	public void fun(Integer i)
	{
		System.out.println("fun(Integer ) ");
	}
	public void fun(String name)
	{
		System.out.println("fun(String ) ");
	}

	// Driver code
	public static void main(String [] args)
	{
		Test mv = new Test();

		// This line causes error
		mv.fun(null);
	}
}

Output :

22: error: reference to fun is ambiguous
        mv.fun(null);
          ^
  both method fun(Integer) in Test and method fun(String) in Test match
1 error

The reason why we get a compile-time error within the above scenario is, here the tactic arguments Integer and String both aren't primitive data types in Java. meaning they accept null values. once we pass a null value to method1 the compiler gets confused about which method it's top pick, as both are accepting the null.
This compile-time error wouldn’t happen unless we intentionally pass the null value. for instance, see the below scenario which we follow generally while coding.

public class Test
{
	// Overloaded methods
	public void fun(Integer i)
	{
		System.out.println("fun(Integer ) ");
	}
	public void fun(String name)
	{
		System.out.println("fun(String ) ");
	}

	// Driver code
	public static void main(String [] args)
	{
		Test mv = new Test();
		
		Integer arg = null;

		// No compiler error
		mv.fun(arg);
	}
}

Output :

fun(Integer ) 
 
 
 

Submit Your Programming Assignment Details