"Y ahora, una breve lección de Diego. Breve y al grano. Acerca de las conversiones de tipo de referencia".
"Comencemos con las variables de objeto. Puede asignar cualquier tipo de referencia a dicha variable ( conversión de ampliación ). Sin embargo, para realizar la asignación en la otra dirección ( conversión de reducción ), debe indicar explícitamente una operación de conversión:"
Código | Descripción |
---|---|
|
Una conversión de referencia de ampliación típica |
|
Una típica conversión de referencia de estrechamiento |
|
Ampliación de la conversión. |
|
¡Error de tiempo de ejecución! No puede convertir una referencia Integer a una referencia String. |
|
¡Error de tiempo de ejecución! No puede convertir una referencia Integer a una referencia Float. |
|
Conversión al mismo tipo. Una conversión de referencia de estrechamiento. |
Una conversión de referencia de ampliación o reducción no cambia el objeto de ninguna manera. La parte de reducción (o ampliación) se refiere específicamente al hecho de que la operación de asignación incluye (no incluye) la verificación de tipo de la variable y su nuevo valor. "
"Este es el raro ejemplo en el que todo está claro".
"Para evitar los errores en estos ejemplos , tenemos una forma de averiguar a qué tipo hace referencia la variable Objeto: "
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
"Debe realizar esta verificación antes de cada conversión de ampliación a menos que esté 100% seguro del tipo de objeto".
"Entiendo."
GO TO FULL VERSION