String-Cast vs. toString()-Aufruf
22.11 2007, 10:25 Gespeichert in:Java | Computer & IT
Nun ist es so, dass die Mutter aller Objekte,@. Wird
Im zweiten Fall haben wir mit dem Cast nach String etwas Besonderes. Ein expliziter Cast sagt aus, daß wir ein Objekt vom jeweiligen Typ erwarten. Casten wir also
Grundsätzlich kann man jedes Objekt auf einen exakten Objekttyp, ein implementiertes Interface oder eine beerbte Klasse casten. Ein Objekt der Klasse
Bei String hat man nun einen speziellen Fall:
Ich hoffe, der Unterschied ist verständlich erklärt.
java.lang.Object eine Methode toString() anbietet, welche eine Repräsentation des Objektes als String zurückliefert. Standardmäßig ist das toString() nicht überschrieben (was meistens der Fall ist), bleibt es auch dabei. Man kann aber auch gezielt die toString()-Methode überschreiben, um eine spezielle Ausgabe zu erhalten, z.B. alle im Objekt gespeicherten Werte in Form einer CSV-Zeile oder Ähnliches.Im zweiten Fall haben wir mit dem Cast nach String etwas Besonderes. Ein expliziter Cast sagt aus, daß wir ein Objekt vom jeweiligen Typ erwarten. Casten wir also
someObj nach String, so legen wir fest, dass wir sicher sind, dass es sich bei dem Objekt um einen String handelt.Grundsätzlich kann man jedes Objekt auf einen exakten Objekttyp, ein implementiertes Interface oder eine beerbte Klasse casten. Ein Objekt der Klasse
Hurga, welche von Trallala erbt und Wachipi implementiert, läßt sich also nach Hurga, Trallala und Wachipi casten. Und auch nach Object, da Trallala und damit auch Hurga von Object erben. Nach dem Cast stehen aber ausschließlich die Methoden zur Verfügung, die in der jeweiligen Klasse oder im jeweiligen Interface vorgesehen sind.Bei String hat man nun einen speziellen Fall:
String erbt direkt von java.lang.Object. Ferner ist String final deklariert. Es ist also nicht möglich, dass irgendeine Klasse von java.lang.String erbt. Ist also someObj irgendwas anderes als ein String, so führt der Cast auf String zwangsläufig zu einer ClassCastException. Ich hoffe, der Unterschied ist verständlich erklärt.