Klammern um den Datentyp?

8

Ich bin ein beginnender Programmierer und stieß in meinem Lehrbuch darauf:

%Vor%

IntElement ist eine Unterklasse von DataElement . num ist ein Int, der einen Wert für eine verknüpfte Liste speichert.

Was ist der Sinn von (IntElement) nach temp =? Was wäre falsch mit IntElement temp = otherElement ? Und wie sieht das überhaupt aus, wenn ein Datentyp in Klammern gesetzt wird?

    
aearon 18.02.2012, 21:31
quelle

5 Antworten

8

Dies wird Casting genannt, siehe hier:

Grundsätzlich, indem Sie dies tun:

%Vor%

Sie sagen dem Compiler, die Tatsache zu ignorieren, dass Sie otherElement als DataElement deklariert haben, und vertrauen darauf, dass es eine IntElement und nicht DataElement oder eine andere Unterklasse von DataElement ist.

Sie können nicht nur IntElement temp = otherElement; verwenden, da Sie otherElement , das als DataElement definiert wurde, zu einem anderen Element machen würden, in diesem Fall IntElement . Dies wird ein großer Schlag für die Typ-Sicherheit sein, weshalb die Typen von Anfang an definiert sind.

Dies könnte technisch mit Typ-Inferenz getan werden:

Java unterstützt das jedoch nicht und Sie müssen explizit sein.

Wenn es möglich ist, andere Elemente zu erhalten, können Sie instanceof verwenden, um die Laufzeit vor dem Casting zu überprüfen:

  • Operators / TheinstanceofKeyword.htm "& gt; http: //www.java2s.com/Tutorial/Java/0060_Operators/TheInstanceofKeyword.htm

Irgendwann, nachdem Sie das durchgemacht haben, sollten Sie sich auch Generika ansehen:

icyrock.com 18.02.2012, 21:34
quelle
2

Der Zweck von (IntElement) nach temp ist eine Typkonvertierung, technisch gesehen eine Umwandlung , wo du otherElement sagst, was ein Parameter vom Typ% co_de ist %, sollte als Objekt des konkreteren Typs DataElement verwendet werden.

    
Óscar López 18.02.2012 21:34
quelle
1

jmein ist korrekt, es teilt dem Compiler / Interpreter mit, den einen Variablentyp in einen anderen zu verwandeln. In Wirklichkeit teilt es dem Prozessor nur mit, es als einen anderen Typ zu behandeln. In C ist dies ein Segen und ein Fluch, in Java, was aussieht, als würdest du schreiben, du MUSST die Variable, um sie anders zu behandeln.

    
Ryan 18.02.2012 21:37
quelle
1

(IntElement) wandelt andere Elemente des Typs DataElement in IntElement

um

Lesen Sie diesen Link über Java-Typen und Typkonvertierung (Casting) für eine ausführlichere Beschreibung.

    
Josh Mein 18.02.2012 21:33
quelle
0

Es handelt sich um eine Art Besetzung Siehe das Beispiel hier

    
aviad 18.02.2012 21:36
quelle

Tags und Links