Aunque las respuestas anteriores ya explican qué sucede si lanzas nulo a Object vs. si no lanzas null a Object, pero me gustaría añadir algunos puntos faltantes.
Por lo tanto, en Java, las "matrices" son objetos lo que significa que se pueden asignar a Tipo de objeto, es decir,si lo haces new char[0].getClass().getSuperclass()
da java.lang.Object
y por lo tanto en caso de que null no se presente explícitamente, el compilador elige valueOf(char[])
sobre valueOf(Object)
como el método más aplicable.
Sin embargo, aquí viene la parte que falta, si hubiera habido otro método sobrecargado que se acepta un parámetro tipo de interfaz (recordar interfaz no se extienden clase de objetos para que ellos también causan ambigüedad en la selección del método más específico), por ejemplo, valueOf (CharSequence), entonces esto habría dado lugar a un error de tiempo de compilación (es decir, la referencia a valueOf es ambigua) porque el compilador no podría elegir el método más aplicable.
Así que la línea inferior es evite pasar nulo como argumentos a los métodos más bien siempre los convierte a tipo param del método que se está llamando. :)
posible duplicado de [¿Por qué lanzamiento nulo?] (Http://stackoverflow.com/questions/315846/why-null-cast) –