2016-05-31 11 views
0
benutzerdefinierte Klasse Art von

Ich finde das nächstgelegene ausdrucken kann dieses Threads: How to print the value of arraylist contents in my logcat?Wie toString außer Kraft zu setzen und Arraylist

Allerdings, wenn ich versuche, die Ausgabe außer Kraft zu setzen, es gibt mir eine Fehlermeldung: Die Methode toString (long []) in dem Typ-Arrays ist nicht anwendbar für die Argumente (List)

// Update: Es stellt sich heraus, dass ich Arrays.toString im System.out.printin nicht. Lassen Sie mich meine Frage folgendermaßen ändern: Warum brauche ich dieses Override in der Interval-Klasse? Ich bemerkte, dass ohne, dass ich eine Ausgabe wie diese:

[[email protected], [email protected], [email protected], [email protected]] 

Hier ist mein Code:

public static void main (String [] args) { 
    List<Interval> intervals = new ArrayList<Interval>(); 
    intervals.add(new Interval(1,3)); 
    intervals.add(new Interval(2,6)); 
    intervals.add(new Interval(8,10)); 
    intervals.add(new Interval(15,18)); 
    System.out.println(Arrays.toString(intervals)); 
} 

Hier ist meine Intervall Klasse:

public class Interval { 
    int start; 
    int end; 
    Interval() {start = 0; end = 0;} 
    Interval(int s, int e) { 
    start = s; 
    end = e; 
    } 
    @Override 
    public String toString() { 
     return "[ " + start + ", " + end + "] "; 
    } 
} 
+4

Warum die Liste in Array konvertieren? Drucken Sie einfach die Liste direkt – aviad

+1

Drucken Sie es einfach wie folgt aus: System.out.println (Intervalle); und du wirst das Ergebnis als deine Erwartung haben. –

+0

Bitte bearbeiten Sie Ihre Frage nicht, um eine neue Frage zu stellen, sobald die ursprüngliche Frage beantwortet wurde. Wenn Sie eine andere Frage haben, erstellen Sie einen neuen Beitrag und fragen Sie ihn. – azurefrog

Antwort

1

Das Problem ist, dass Arrays .toString (...) erwartet ein Array für die Eingabe, keine Liste.

+0

Ok, ich bin hier ein wenig verloren. Ich habe den Grund, dass ich diese Override toString-Sache gemacht habe, dass ich es in der System.out.println verwenden muss. Also, lassen Sie mich meine Frage in: Warum ohne dieses Override, wenn ich die System.out.println mache, gibt es mir [Interval @ 6d06d69c, Interval @ 7852e922, Interval @ 4e25154f, Interval @ 70dea4e] – Patrick

+0

@Patrick 'System. out.println() 'ruft' toString() 'implizit auf dem übergebenen Objekt auf. – shmosel

Verwandte Themen