2016-11-17 104 views
-1

我不知道如何在java中迭代對象,但是我試圖創建一個自定義類並嘗試從中得到結果,但是得到了相同的迭代結果,而數據集進入對象是不同的。 這裏是我的課程。Java迭代自定義類的對象

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); } 


} 

,這是我調用該類

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

不回答你的問題,但這看起來應該是'private''public void set_list(){list.add(this); }' –

+0

看看你的列表成員並閱讀靜態與非靜態類成員 – Gernot

+0

@Gernot靜態成員*是*類成員。 – Kayaman

回答

0

你這裏是什麼frankendesign的情況。您正在使用您的obj_error(您應該重命名爲ObjError,以便讓Java眼更容易閱讀)的單個實例,當您確實需要2個實例時。

您應該從obj_error類中取出list,並將其放入您的主要方法中。如果您將您的set方法爲構造,設計開始看起來好多了(藝術效果):

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

不要在評論中放置代碼。我相信你能明白爲什麼。 – Kayaman

+0

好的............ –

+0

您可以編輯您的帖子以添加您所做的更改,以及是否仍有問題。 – Kayaman

0

有說不完的話......首先,掌聲它編譯。

作爲提示,您應該爲包含此列表中的對象的錯誤列表的主對象使用不同的類。目前,你正在處理一種樹形結構。

例如:

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

應該更清楚。