2016-11-17 6 views
-1

Ich habe keine Ahnung über die Iteration eines Objekts in Java, aber ich habe versucht, eine benutzerdefinierte Klasse zu erstellen und versuchen, ein Ergebnis davon zu erhalten, aber ich habe ein Iterationsergebnis, während der Datensatz in Objekt sind anders. und hier sind meine Klasse.Java Iterieren eines Objekts der benutzerdefinierten Klasse

package property; 

import java.util.ArrayList; 
public class obj_error { 

    public Integer error_code; 
    public String error_desc; 
    public Integer error_line; 
    public String error_modul; 
    public Integer total = 0; 
    public ArrayList<obj_error> list = new ArrayList<obj_error>(); 

    public void set(Integer code, String desc, String module,Integer line){ 
     this.error_code = code; 
     this.error_desc = desc; 
     this.error_modul= module; 
     this.error_line = line; 
     this.total  = total+1; 
     //list.add(this); 
     set_list(); 
    } 

    public Integer error_code()  { return error_code; } 
    public String error_desc()  { return error_desc; } 
    public Integer error_line()  { return error_line; } 
    public String error_modul()  { return error_modul; } 
    public Integer total()   { return total; } 
    public ArrayList<obj_error> get_error_list() { return list; } 

    public void set_code(Integer param) { this.error_code = param; } 
    public void set_desc(String param) { this.error_desc = param; } 
    public void set_line(Integer param) { this.error_line = param; } 
    public void set_modul(String param) { this.error_modul = param; } 
    public void set_total(Integer param) { this.total = total+1; } 
    public void set_list(){ list.add(this); } 


} 

und das ist, wo ich dieser Klasse nennen

package testcase; 

import java.util.ArrayList; 
import java.util.Iterator; 
import property.obj_error; 

public class set_error { 

    public static void main(String[] args){ 
     obj_error error = new obj_error(); 
     error.set(1001,"Not Valid","Loand",1); 
     error.set(1002,"Not Validsafasd","Loan",2); 
     System.out.println(error.list); 


     for(Iterator<obj_error> i = error.get_error_list().iterator(); i.hasNext();) { 
      obj_error item = i.next(); 
      System.out.println(item.error_code+" " + item.error_desc+ " " +item.error_line+ " " + item.error_modul); 

     } 
     //print out result 
     //1002 Not Validsafasd 2 Loan 
     //1002 Not Validsafasd 2 Loan 


    } 
} 
+0

Antwort auf Ihre Frage, aber das sieht so aus, als sollte es 'privat' sein' public void set_list() {list.add (this); } ' –

+0

Werfen Sie einen Blick auf Ihre Liste Mitglied und lesen Sie über statische vs. nicht statische Klassenmitglieder – Gernot

+0

@Gernot statische Mitglieder * sind * Klassenmitglieder. – Kayaman

Antwort

0

Was Sie hier haben, ist ein Fall von frankendesign. Sie verwenden eine einzelne Instanz Ihres obj_error (die Sie wahrscheinlich in ObjError umbenennen sollten, um Java-Lesern das Lesen zu erleichtern), wenn Sie wirklich 2 Instanzen zu haben scheinen.

Sie sollten die list aus Ihrer obj_error Klasse nehmen und stattdessen in Ihre Hauptmethode einfügen. Wenn Sie Ihre set Methode in einen Konstruktor konvertieren, beginnt das Design viel besser (Künstler Rendering) zu suchen:

public static void main(String[] args){ 
    ArrayList<obj_error> list = new ArrayList<obj_error>(); 

    obj_error error1 = new obj_error(1001, "Not Valid", "Loand", 1); 
    list.add(error1); 

    obj_error error2 = new obj_error(1002, "Not Validsafasd", "Loan", 2); 
    list.add(error2); 

    System.out.println(list); 

    for(obj_error item : list) 
     System.out.println(item.error_code+" " + item.error_desc+ " " +item.error_line+ " " + item.error_modul); 
+0

Legen Sie keinen Code in Kommentare. Ich bin sicher, Sie können sehen, warum. – Kayaman

+0

Okay ............ –

+0

Sie können Ihren Beitrag bearbeiten, um die von Ihnen vorgenommenen Änderungen hinzuzufügen, und wenn noch Probleme auftreten. – Kayaman

0

Es gibt so viel zu sagen ... Erstens, Applaus, dass es kompiliert.

Als Tipp sollten Sie verschiedene Klassen für das Hauptobjekt verwenden, die die Liste der Fehler von den Objekten in dieser Liste enthalten. Derzeit haben Sie es mit einer Art Baumstruktur zu tun.

Zum Beispiel:

class ErrorContainer{ 
    // ... 
    private List<ErrorMsg> = new ArrayList<>; 
    // ... continue 

Es sollte klarer sein.

Verwandte Themen