2016-11-17 10 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のインスタンスを1つ使用しています(実際には2つのインスタンスが必要な場合は、Javaの目を見やすくするために、おそらくObjErrorという名前に変更する必要があります)。

あなたのの代わりに、あなたの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 

それは明確にする必要があります。

関連する問題