1

Booleanaと aを接続する必要がありStringます。getteraと a setterfor eachも必要Booleanです。

例えば:

boolean errorFlag1;
private static final String  errorMessage1 = "...";
boolean errorFlag2;
private static final String  errorMessage2 = "...";
...

public Messages[] getErrorMessages()
{
    if(errorFlag1)
         Add errorMessage1 to Messages[]
    if(errorFlag2)
         Add errorMessage2 to Messages[]
    ...
}


public boolean getErrorFlag1()
{
    return errorFlag1;
}
public setErrorFlag1( ef1 )
{ 
    this.errorFlag1 = ef1;
}
...

ここでマップを使用できますか? フラグをメッセージに「接続」するより良い方法はありますか?

4

3 に答える 3

2

エラー メッセージがどのように設定されているかはわかりませんが、Integer各エラーを表すを に保存することをお勧めしList<Integer>ます。カプセル化されたリストの操作を可能にListするメソッドを介してエラーが追加されます。addError

次に、エラー メッセージの定義を 内に配置しますMap<Integer,String>。そのキーは、適切なエラー メッセージに対応します。これにより、マップに新しいエントリを追加するだけで、新しいエラーを作成できます。

private List<Integer> errors = new ArrayList<Errors>();
private static Map<Integer> errorLookup = new HashMap<Integer,String>();

static{
  errorLookup.put(1, "Error Message 1");
  errorLookup.put(2, "Error Message 2");
}

public void addError(Integer errorKey){
   errors.add(errorKey);
}

public List<String> getErrors(){

   List<String> errorMsgs = new ArrayList<String>();
   for(Integer key: errors){
     errorMsgs.add(this.errorLookup.get(key).value);
   }
   return errorMsgs;
}
于 2012-11-27T10:17:43.847 に答える
2

別の解決策(あなたの目標を誤解していないことを願っています):

enum ErrorMessage
{
    ERROR_ONE("First message"), ERROR_TWO("Second message");

    private String message; 

    ErrorMessage(String str) 
    {
        message = msg;
    }

    public String getMessage() 
    {
        return message;
    }
}

このようにして、「メッセージ」として文字列を含む一定のエラーメッセージが表示されます。それらの型はErrorMessageであり、そのようなものを渡すとErrorMessage.ERROR_ONE、getter メソッドによってメッセージを取得できます。

エラーを含むクラスが必要な場合は、エラーのコレクションを作成し、発生したエラーを追加または削除できます。

于 2012-11-27T10:16:01.037 に答える
0

確実にマップを使用できるため、エラーメッセージの数は実行時に決定されます。キーとしてエラーメッセージを使用し、値としてブール値を使用します。

于 2012-11-27T10:09:12.813 に答える