2016-11-17 105 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 

应该更清楚。