"Și acum, o scurtă lecție de la Diego. Scurtă și la obiect. Despre conversiile tipului de referință."
„Să începem cu variabilele Object. Puteți aloca orice tip de referință unei astfel de variabile ( conversie de lărgire ). Cu toate acestea, pentru a face alocarea în cealaltă direcție ( conversie de îngustare ), trebuie să indicați în mod explicit o operație de turnare:”
Cod | Descriere |
---|---|
|
O conversie tipică de referință de extindere |
|
O conversie tipică de referință de îngustare |
|
Lărgirea conversiei. |
|
Eroare de rulare! Nu puteți arunca o referință Integer la o referință String. |
|
Eroare de rulare! Nu puteți arunca o referință Integer la o referință Float. |
|
Conversie la același tip. O conversie de referință care se îngustează. |
„ O conversie de referință de lărgire sau îngustare nu schimbă obiectul în niciun fel. Partea de îngustare (sau lărgire) se referă în mod specific la faptul că operația de atribuire include (nu include) verificarea de tip a variabilei și a noii sale valori. "
„Acesta este exemplul rar în care totul este clar”.
„Pentru a evita erorile din aceste exemple , avem o modalitate de a afla ce tip este referit de variabila Object: ”
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;
}
„Ar trebui să efectuați această verificare înainte de fiecare conversie de extindere, cu excepția cazului în care sunteți 100% sigur de tipul obiectului.”
"Am înţeles."
GO TO FULL VERSION