Datentyp eines Objektes abfragen



  • hallo Leute!

    ich habe mal wieder eine Anfängerfrage - ich hoffe ihr könnt mir helfen!

    public interface vehicle {...}
    public class Auto implements vehicle {...}
    public class Cabrio extends Auto {...}
    public class HelperClass 
    {    
        public static void main(String args[]) 
        {    
            Auto c1 = new Auto();    
            Cabrio c2 = new Cabrio();    
            distinguish(c1);    
            distinguish(c2);    
        }    
    
        public static void distinguish(vehicle v) 
        {   
            // CODE???  
        }
    }
    

    Die Methode distinguish() soll falls sie mit einem Auto Datentyp (wie in Zeile 6) aufgerufen wird der Text "ein Auto" ausgeben, und falls sie mit einem Cabrio Datentyp (wie in Zeile 7) aufgerufen wird der Text "ein Cabrio" ausgegeben. Wie muss die Funktion distinguish aussehen?

    Vielen Dank für Euere Hilfe!

    Ciao
    shoat



  • Unterscheidungen von Klassen kannst du mit Hilfe von instanceof machen.

    Pass aber auf, dass du auf die Klasse prüfst, die in der Ableitunghshierarchie ganz am Ende steht. Cabrio ist auch ein Auto.

    z.B.

    if (v instanceof Cabrio)
        ...
    

    /Dirk



  • hallo Dirk.

    Vielen Dank für die Hilfe - ich probiere es gleich mal aus.
    Aber eine Frage vorneweg - Wo finde ich diesen instanceof-Operator in der Java-Klassenbibliothek? Ich habe noch nie davon gehört!

    Ciao
    shoat



  • instanceof ist ein Schlüsselwort von Java und keine Methode einer Klasse. Deswegen findest du das in keiner API-Dokumentation.



  • @Dirk

    danke nochmal - es funktioniert prächtig! 🙂

    @CengizS!

    danke für die Info - ich gehe mal in die Bib und lese da ein wenig über das Schlüsselwort instanceof nach. 🙂

    ciao
    shoat


Anmelden zum Antworten