Java迭代自定义类的对象

时间:2016-11-17 07:35:29

标签: 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


    }
}

2 个答案:

答案 0 :(得分:0)

这里有一个frankendesign案例。您正在使用obj_error的单个实例(您应该将其重命名为ObjError,以便让Java眼睛更容易阅读),当您真正想要2个实例时。

您应该从list课程中取出obj_error,然后将其放入主要方法中。如果将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);

答案 1 :(得分:0)

有很多话要说......首先,掌声是它的编制。

作为提示,您应该为主对象使用不同的类,其中包含此列表中对象的错误列表。目前,您正在处理一种树形结构。

例如:

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

应该更清楚。