Why does `System.out.println(null);` give "The method println(char[]) is ambiguous for the type PrintStream error"?

java, null, println, system, system.out

Solution

There are 3 `println` methods in `PrintStream` that accept a reference type - `println(char x[])`, `println(String x)`, `println(Object x)`.

When you pass `null`, all 3 are applicable. The method overloading rules prefer the method with the most specific argument types, so `println(Object x)` is not chosen.

Then the compiler can't choose between the first two - `println(char x[])` & `println(String x)` - since `String` is not more specific than `char[]` and vice versa.

If you want a specific method to be chosen, cast the null to the required type.

For example :

System.out.println((String)null);

Problem

I am using the code: ``` System.out.println(null); ``` It is showing the error: ``` The method println(char[]) is ambiguous for the type PrintStream ``` Why doesn't `null` represent `Object`?

Original source

Related problems