2016-12-02 1 views
-2

Ich habe dieses Verfahren definiert:Wie drucke ich mein Java-Objekt ohne "something @ 677327b6" ohne Überschreiben?

@Override 
    public String toString(String line) 
    { 
     String[] categories = line.split("; "); 
     String[] info; 

     // Get the suspect's information 
     info = categories[0].split(", "); 
     suspect = new Person(info[0].charAt(0), Integer.parseInt(info[1]), Double.parseDouble(info[2])); 
     String str = ""; 
     if (info[0].charAt(0) == 'M') 
      str += "Male, "; 
     else if (info[0].charAt(0) == 'F') 
      str += "Female, "; 
     else 
      str += "unknown, "; 
     str += Integer.parseInt(info[1]) + "'s, "; 
     str += Double.parseDouble(info[2]) +"m"; 
     System.out.println(str); 
     return str; 
    } 
} 

Wenn ich dies durch die Befehlszeile vor der Zugabe von @Override lief I war eine Ausgabe wie diese erhalten: [email protected] im Terminal.

Ich verstehe, dass dies der Hashcode ist, der ausgegeben wird. Ich brauche es jedoch, um die Str zu drucken, wie ich in der toString() -Methode definiert habe.

Das Problem ist, dass die Methode toString (String) vom Typ Detective eine Supertype-Methode überschreiben oder implementieren muss, ist meine einzige Lösung, die @Override Annotation zu entfernen.

Auf welche andere Weise kann ich auf den richtigen Wert zugreifen, anstatt sie zu überschreiben?

+1

Wenn Sie Eclipse verwenden, können Sie im Menü Quelle-> toString generieren. Damit bekommst du eine void-Methode, die alle Daten ausdruckt – XtremeBaumer

Antwort

1

Dies ist nicht die übliche Methode toString, die in der Klasse Object deklariert ist, oder?

@Override 
public String toString(String line) 

Das auf Objekt Argumente nicht nehmen ...

@Override 
public String toString() { ... } 

Wo kommt line kommen aus?

Wenn Sie line in der Klasse (Detective?) Selbst gespeichert haben, können Sie die korrekte toString Signatur verwenden.

Hoffe, das hilft.

+0

Ja, ich habe es in der Detektiv-Klasse gespeichert. Ich habe die Argumente entfernt und die Zeile auf null gesetzt. Jetzt bekomme ich diese Fehler 'Exception in thread "main" java.lang.NullPointerException \t bei Detective.toString (Detective.java:82) \t bei java.lang.String.valueOf (String.java:2994) \t bei java.lang.StringBuilder.append (StringBuilder.java:131) ' – sd2000e

+0

@ sd2000e Nicht sicher, welche Zeile 82 ist, aber ist' line' zufällig auf 'null' gesetzt? Verwenden Sie einen Debugger und gehen Sie durch Ihren 'toStirng' Code – BretC

+0

Entschuldigung. Ich habe einen Fehler in meinem Kommentar gemacht. Ich habe Zeile innerhalb von toString auf null initialisiert. – sd2000e

Verwandte Themen