我不知道在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
}
}
有很多话要说…首先,请称赞它可以编译。
作为提示,您应该为包含此列表中对象的错误列表的主对象使用不同的类。当前,您正在处理一种树状结构。
例如:
class ErrorContainer{
// ...
private List<ErrorMsg> = new ArrayList<>;
// ... continue
你这里有一个弗兰肯设计的例子。您正在使用obj_error
的单个实例(您可能应该将其重命名为ObjError
以使Java眼睛更容易阅读),而实际上似乎需要两个实例。
你应该把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);