Referencetypekonverteringer - 1

"Og nu en kort lektion fra Diego. Kort og præcist. Om referencetypekonverteringer."

"Lad os starte med objektvariabler. Du kan tildele en hvilken som helst referencetype til en sådan variabel ( udvidelseskonvertering ). Men for at foretage tildelingen i den anden retning ( indsnævring af konvertering ), skal du udtrykkeligt angive en støbeoperation:"

Kode Beskrivelse
String s = "mom";
Object o = s; // o stores a String
En typisk udvidende referencekonvertering
Object o = "mom"; // o stores a String
String s2 = (String) o;
En typisk indsnævre referencekonvertering
Integer i = 123; // o stores an Integer
Object o = i;
Udvidelseskonvertering.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Kørselsfejl!
Du kan ikke caste en heltalsreference til en strengreference.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Kørselsfejl!
Du kan ikke caste en heltalsreference til en Float-reference.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Konvertering til samme type. En indsnævrende referencekonvertering.

" En udvidende eller indsnævrende referencekonvertering ændrer ikke objektet på nogen måde. Indsnævringsdelen (eller udvidende) henviser specifikt til det faktum, at tildelingsoperationen inkluderer (ikke inkluderer) typekontrol af variablen og dens nye værdi. "

"Dette er det sjældne eksempel, hvor alt er klart."

"For at undgå fejlene i disse eksempler har vi en måde at finde ud af ,  hvilken type der refereres til af objektvariablen: "

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;
}
3
Opgave
Java Syntax,  niveaulektie
Låst
Code entry
Your attention, please! Now recruiting code entry personnel for CodeGym. So turn up your focus, let your fingers relax, read the code, and then... type it into the appropriate box. Code entry is far from a useless exercise, though it might seem so at first glance: it allows a beginner to get used to and remember syntax (modern IDEs seldom make this possible).

"Du bør udføre denne kontrol før hver udvidelseskonvertering, medmindre du er 100 % sikker på objektets type."

"Forstået."