Konversi jenis referensi - 1

"Dan sekarang, pelajaran singkat dari Diego. Singkat dan to the point. Tentang konversi tipe referensi."

"Mari kita mulai dengan variabel Objek. Anda dapat menetapkan jenis referensi apa pun ke variabel tersebut ( konversi pelebaran ). Namun, untuk membuat penugasan ke arah lain ( konversi penyempitan ), Anda harus secara eksplisit menunjukkan operasi pemeran:"

Kode Keterangan
String s = "mom";
Object o = s; // o stores a String
Konversi referensi pelebaran tipikal
Object o = "mom"; // o stores a String
String s2 = (String) o;
Konversi referensi penyempitan tipikal
Integer i = 123; // o stores an Integer
Object o = i;
Konversi pelebaran.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Kesalahan waktu proses!
Anda tidak dapat mentransmisikan referensi Integer ke referensi String.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Kesalahan waktu proses!
Anda tidak dapat mentransmisikan referensi Integer ke referensi Float.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Konversi ke jenis yang sama. Konversi referensi penyempitan.

" Konversi referensi pelebaran atau penyempitan tidak mengubah objek dengan cara apa pun. Bagian penyempitan (atau pelebaran) secara khusus mengacu pada fakta bahwa operasi penugasan mencakup (tidak termasuk) pemeriksaan tipe variabel dan nilai barunya. "

"Ini adalah contoh langka di mana semuanya jelas."

"Untuk menghindari kesalahan dalam contoh inikami memiliki cara untuk mengetahui tipe apa yang direferensikan oleh variabel Object: "

Kode
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;
}

"Anda harus melakukan pemeriksaan ini sebelum setiap konversi pelebaran kecuali Anda 100% yakin dengan tipe objek."

"Mengerti."