Penukaran jenis rujukan - 1

"Dan sekarang, pengajaran ringkas daripada Diego. Ringkas dan tepat. Mengenai penukaran jenis rujukan."

"Mari kita mulakan dengan Pembolehubah objek. Anda boleh menetapkan sebarang jenis rujukan kepada pembolehubah sedemikian ( melebarkan penukaran ). Walau bagaimanapun, untuk membuat tugasan ke arah lain ( menyempitkan penukaran ), anda mesti menunjukkan operasi cast secara eksplisit:"

Kod Penerangan
String s = "mom";
Object o = s; // o stores a String
Penukaran rujukan meluas yang tipikal
Object o = "mom"; // o stores a String
String s2 = (String) o;
Penukaran rujukan penyempitan biasa
Integer i = 123; // o stores an Integer
Object o = i;
Memperluaskan penukaran.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Ralat masa jalan!
Anda tidak boleh menghantar rujukan Integer kepada rujukan String.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Ralat masa jalan!
Anda tidak boleh menghantar rujukan Integer kepada rujukan Float.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Penukaran kepada jenis yang sama. Penukaran rujukan yang mengecil.

" Penukaran rujukan yang melebar atau mengecil tidak mengubah objek dalam apa cara sekalipun. Bahagian penyempitan (atau pelebaran) secara khusus merujuk kepada fakta bahawa operasi tugasan termasuk (tidak termasuk) pemeriksaan jenis pembolehubah dan nilai baharunya. "

"Ini adalah contoh yang jarang berlaku di mana semuanya jelas."

"Untuk mengelakkan ralat dalam contoh inikami mempunyai cara untuk mengetahui jenis yang dirujuk oleh pembolehubah Objek: "

Kod
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 semakan ini sebelum setiap penukaran yang meluas melainkan anda pasti 100% dengan jenis objek."

"Faham."