2016-07-30 22 views
-2

Ich frage mich, ob ich für jede Schleife verwenden können, um durch das Objekt einer Klasse zu durchlaufen. zum Beispiel habe ich ein Objekt Honda vom Typ Auto erstellt. Ich füge den ganzen Zustand des Autos wie Modell, Preis, Farbe, usw. dazu an. Ich möchte alle Instanzen des Autos drucken. Ich möchte nicht die print-Anweisung verwenden, um jede Instanz zu drucken. Was ist der beste Weg, es zu tun? Vielen Dank.Wie für jedes zu iterieren Objekt einer Klasse

unter meinem Java-Code

package classandobjects; 

public class MainClass { 

    public static void main(String[] args) { 

     Classes friend1 = new Classes(); 
     friend1.name="yusuf"; 
     friend1.age=27; 
     friend1.country="Nigeria"; 
     friend1.department="EE"; 
     friend1.gender="male"; 

     Classes friend2 = new Classes(); 
     friend1.name="mathew"; 
     friend1.age=30; 
     friend1.country="Nigeria"; 
     friend1.department="EE"; 
     friend1.gender="male"; 

     FavPlayers player = new FavPlayers(); 
     player.pname="J.Terry"; 
     player.position="C.Back"; 
     player.gaols=38; 
     player.awards="25-awards"; 

     FavPlayers player1 = new FavPlayers(); 
     player1.pname="F.Lampard"; 
     player.position="Midfield"; 
     player.gaols=50; 
     player.awards="10-awards"; 

     Car model = new Car(); 
     model.modelName="Honda Civic"; 
     model.color="Ash-color"; 
     model.Doors="4-doors"; 
     model.price=900000; 

     System.out.println("below is my friend information"); 
     System.out.println(friend1.name); 
     System.out.println(friend1.age); 
    } 
} 

+0

Nur ein Vorschlag, aber "Classes" sieht wie eine einzelne Instanz eines Elements aus. Daher sollte der Klassenname "Class" –

+0

sein, den Sie für jedes verwenden können, wenn sie in einer List, Collection oder einem Array gespeichert sind. – Stultuske

+0

Es gibt nichts ['Iterable'] (https://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html) in Ihrem Code, mit dem Sie für jedes verwenden können. – Polygnome

Antwort

0

Ich will nicht die print-Anweisung verwenden, um jede Instanz

Gut zu drucken, Sie gehen einen String zu haben, aufzubauen und es irgendwo zu drucken.

was ist der beste Weg, es zu tun?

Wenn ich richtig verstehe, möchten Sie ein Objekt drucken?

Dann implementieren Sie eine toString() Methode.

public class Classes { 
    // other code 
    public String toString() { 
     // change how you want 
     return this.name + ", " + this.age; 
    } 
} 

Dann können Sie

System.out.println(friend1); 

tun Wenn Sie eine Liste von Objekten drucken möchten, dann sind Sie eine Liste Schleife über müssen. Sie könnten Reflektion verwenden, um eine Liste von Objektfeldern und Werten zu erhalten, dies erscheint jedoch unnötig.

+0

Gern geschehen, aber bitte [bitte lesen] (http://stackoverflow.com/help/someone-answers) –

2

Es wäre besser, außer Kraft setzen eine toString Methode in der es Car Klasse ist und einfach drucken möchten:

System.out.println(model); 

Tat Sie needn‘ t drucken Sie jede Instanzvariable separat. Ihre toString möglicherweise die folgende Ansicht haben:

public @Override String toString() { 
    return modelName + " [" + color + ... + "]"; // also consider StringBuilder 
} 

Wenn Sie von Sprachen kam, wo ein Objekt ist ein assoziatives Array (zB JavaScript) und fragte, wie eine Instanz drucken eine foreach Schleife in Java verwendet wird, dann ist die Antwort, dass Java erlaubt es nicht (ist es möglich durch Reflexion obwohl) und Sie können nicht über Objektvariablen durch eine foreach iterieren.

Verwandte Themen