Referansetypekonverteringer - 1

"Og nå, en kort leksjon fra Diego. Kort og til poenget. Om referansetypekonverteringer."

"La oss starte med objektvariabler. Du kan tilordne en hvilken som helst referansetype til en slik variabel ( utvidelseskonvertering ). Men for å gjøre tilordningen i den andre retningen ( innsnevringskonvertering ), må du eksplisitt angi en støpeoperasjon:"

Kode Beskrivelse
String s = "mom";
Object o = s; // o stores a String
En typisk utvidende referansekonvertering
Object o = "mom"; // o stores a String
String s2 = (String) o;
En typisk innsnevrende referansekonvertering
Integer i = 123; // o stores an Integer
Object o = i;
Utvidende konvertering.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Kjøretidsfeil!
Du kan ikke caste en heltallsreferanse til en strengreferanse.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Kjøretidsfeil!
Du kan ikke caste en heltallsreferanse til en flytende referanse.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Konvertering til samme type. En innsnevrende referansekonvertering.

" En utvidende eller innsnevrende referansekonvertering endrer ikke objektet på noen måte. Innsnevringsdelen (eller utvidelsesdelen) refererer spesifikt til det faktum at tilordningsoperasjonen inkluderer (ikke inkluderer) typekontroll av variabelen og dens nye verdi. "

"Dette er det sjeldne eksemplet hvor alt er klart."

"For å unngå feilene i disse eksemplene har vi  en måte å finne ut hvilken type som refereres til av objektvariabelen: "

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
Oppgave
Java Syntax,  nivålekse
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 utføre denne kontrollen før hver utvidelseskonvertering med mindre du er 100 % sikker på objektets type."

"Har det."