Referans türü dönüştürmeleri - 1

"Ve şimdi, Diego'dan kısa bir ders. Kısa ve öz. Referans tipi dönüştürmeler hakkında."

"Object değişkenleri ile başlayalım. Böyle bir değişkene herhangi bir referans tipi atayabilirsiniz ( genişletme dönüştürmesi ). Ancak atamayı diğer yönde yapmak için ( darlaştırma dönüştürmesi ), bir cast işlemini açıkça belirtmeniz gerekir:"

kod Tanım
String s = "mom";
Object o = s; // o stores a String
Tipik bir genişleyen referans dönüştürme
Object o = "mom"; // o stores a String
String s2 = (String) o;
Tipik bir daraltma referans dönüştürmesi
Integer i = 123; // o stores an Integer
Object o = i;
Genişletme dönüştürme.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Çalışma hatası!
Bir Tamsayı başvurusunu bir Dize başvurusuna çeviremezsiniz.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Çalışma hatası!
Bir Tamsayı referansını bir Float referansına çeviremezsiniz.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Aynı türe dönüştürme. Daralan bir referans dönüştürme.

" Genişletme veya daraltma referans dönüştürmesi, nesneyi hiçbir şekilde değiştirmez. Daraltma (veya genişletme) kısmı, özellikle, atama işleminin değişkenin ve yeni değerinin tip denetimini içerdiğini (içermediğini) ifade eder. "

"Bu, her şeyin açık olduğu ender örnek."

" Bu örneklerdeki hatalardan kaçınmak için ,  Object değişkeni tarafından hangi türe başvurulduğunu bulmanın bir yolunu bulduk: "

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

"Nesnenin türünden %100 emin değilseniz, bu kontrolü her genişletme dönüştürmesinden önce gerçekleştirmelisiniz."

"Anladım."