descargar - Java-¿`null` es una instancia de` object`?
java jdk (7)
También hay un tipo nulo especial, el tipo de la expresión null, que no tiene nombre. Como el tipo nulo no tiene nombre, es imposible declarar una variable del tipo nulo o convertir al tipo nulo. La referencia nula es el único valor posible de una expresión de tipo nulo. La referencia nula siempre se puede convertir a cualquier tipo de referencia. En la práctica, el programador puede ignorar el tipo nulo y simplemente pretender que nulo es simplemente un literal especial que puede ser de cualquier tipo de referencia
Leí que null
no es una instanceof
nada, pero por otro lado, todo en Java extiende la clase Object
.
Como dice JLS , null
es del tipo nulo y no es un tipo de referencia. Sin embargo, se puede usar en situaciones donde se espera un valor de un tipo de referencia (el valor es realmente un "fondo" en el tipo de álgebra).
En una palabra, no.
La IAQ Java de Peter Norvig aborda esta cuestión con cierto detalle (específicamente " Q: ¿es nulo un Objeto? ")
Esperando que este ejemplo aclare su duda:
public void printObject(Object object) {
System.out.println("object referred");
}
public void printObject(double[] doubleArray) {
System.out.println("Array of type double");
}
public static void main(String[] args) {
JavaNullObjectTest javaNullObjectTest = new JavaNullObjectTest();
javaNullObjectTest.printObject(null); //Array of type double
javaNullObjectTest.printObject((Object)null); //object referred
}
Podemos, pero, convertir un ''nulo'' a objeto.
No, null
no es un objeto. Es un literal que significa que una variable no hace referencia a ningún objeto.
No, es una reference
. null no es un objeto
String s = null;
System.out.println(s instanceof Object); // false
Nulo significa que no tienes una referencia a un objeto.
Object o = null;
o es una referencia, pero no se hace referencia a ningún objeto ni se le asigna memoria.
o = new Object();
o sigue siendo una referencia y contiene la dirección donde se encuentra el objeto en la memoria