Klammern um den Datentyp?

Lesezeit: 2 Minuten

Ich bin ein Programmieranfänger und bin in meinem Lehrbuch darauf gestoßen:

public boolean equals(DataElement otherElement)
{
    IntElement temp = (IntElement) otherElement;            
    return (num == temp.num);
}

IntElement ist eine Unterklasse von DataElement. num ist ein int, das einen Wert für eine verkettete Liste speichert.

Was ist der Zweck von (IntElement) gemäß temp =? Was wäre daran falsch IntElement temp = otherElement? Und im Allgemeinen, was bewirkt es, einen Datentyp so in Klammern zu setzen?

Benutzer-Avatar
icyrock.com

Das nennt man Casting, siehe hier:

Im Grunde, indem Sie Folgendes tun:

IntElement temp = (IntElement) otherElement;  

Sie sagen dem Compiler, dass er die von Ihnen deklarierte Tatsache ignorieren soll otherElement als DataElement und vertraue dir, es wird ein IntElement und nicht DataElement oder eine andere Unterklasse von DataElement.

Du kannst nicht gerecht werden IntElement temp = otherElement; wie Sie es auf diese Weise machen würden otherElementwas definiert wurde als DataElement werden in diesem Fall zu einem anderen Element IntElement. Dies wird ein schwerer Schlag für die Typsicherheit sein, weshalb Typen überhaupt erst definiert werden.

Dies könnte technisch durch Typrückschluss erfolgen:

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

Wenn es möglich ist, andere Elemente zu erhalten, möchten Sie vielleicht verwenden instanceof So überprüfen Sie die Laufzeit des Typs vor dem Casting:

  • Operators/TheinstanceofKeyword.htm”>http://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm

Irgendwann, nachdem Sie dies durchgegangen sind, möchten Sie vielleicht auch einen Blick auf Generika werfen:

Der Zweck von (IntElement) gemäß temp führt eine Typkonvertierung durch, technisch gesehen a gießenwo du das sagst otherElementwas ein Parameter vom Typ ist DataElementsollte als Objekt der konkreteren Art betrachtet werden IntElement.

jmein ist richtig, es weist den Compiler/Interpreter an, den einen Variablentyp in einen anderen umzuwandeln. In Wirklichkeit sagt es dem Prozessor nur, es als einen anderen Typ zu behandeln. In C ist dies ein Segen und ein Fluch, in Java, was so aussieht, als würden Sie schreiben, MÜSSEN Sie die Variable umwandeln, um sie anders zu behandeln.

Benutzer-Avatar
Josh Mein

(IntElement) wandelt ein anderes Element um, das vom Typ ist Datenelement tippen IntElement

Schauen Sie sich diesen Link an Java-Typen und Typkonvertierung (Casting) für eine genauere Beschreibung.

Es ist ein TypgussSiehe das Beispiel hier

1014740cookie-checkKlammern um den Datentyp?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy