3

Phpでは、私はこれをよく使います:

$conn_sets = array();
$conn_sets['login'] = "aaa";
$conn_sets['pass'] = "bbb";

Java 1.6 で同じことを行う方法。私はこれをやろうとしました:

private method1() {    
    String[] mystring = new String[] {"login" => "aaa", "pass" => "bbb"};
}

しかし、それは私にエラーを与えます。エラーリストの宣言があるため、これを機能させたいのですが、次を特定することをお勧めします。

throw new MyException(myerrors['failed_login_error']);

より:

throw new MyException(myerrors[116]);

新しいクラスを作成して、オブジェクトをスローできることはわかっています。

throw new MyException(ERROR_CONSTANTS.FAILED_LOGIN_ERROR);

しかし、私は最初のものを好みます (Php で使用するものと同じです)。

それで、何かアイデアはありますか?

4

4 に答える 4

14

Java では、おそらくHashMapなどのMap インターフェイスを使用する必要があります。

ただし、列挙型を使用することは、実際には2番目(エラーのリスト)の例で行うべきことだと思います。Java を使用しているときは、PHP のことは忘れてください。この場合、明確に定義されたキーのリストが必要なため、列挙型の方がはるかに優れています。

于 2009-12-15T18:08:07.990 に答える
6

この特定のケースでは、 Properties (またはさらに良いことに、ResourceBundleを使用してプロパティ ファイルを抽象化) を使用する必要があります。

使い方のチュートリアルはこちら。

これは、(必要に応じて) メッセージを国際化 (I18N) でき、コード内ではなくテキスト ファイルで指定できるため、はるかに優れた方法です (メッセージはコードよりもテキストの方がはるかに優れているため、メッセージを更新することなく更新できます)。再構築します)。

于 2009-12-15T18:21:29.943 に答える
4

HashMapまたはPropertiesオブジェクトを使用して乱暴な名前のパラメーターを格納したくありません。オブジェクト指向を考えて、クラスを使用してアカウントのデータをカプセル化し、オブジェクトが現実の世界で実際に表すものを表現したいと本当に思っています。

String username = "aaa";
String password = "bbb";
Account acc = new Account(username,password);
if (!tryLogin(acc)) {
 throw new LoginFailedException(account);
}

こうすることで、 をキャッチしたクライアントLoginFailedExceptionは情報を利用し、適切な名前を持つ静的に型指定されたメソッドを使用して、たとえば を呼び出してユーザー名を取得できますloginFailedException.getUsername()

于 2009-12-15T18:27:16.580 に答える
4

二重ブレース パターンを使用できます。

Map<String, String> map = new HashMap<String, String>() {{
    put( "login", "aaa" );
    put( "pass", "bbb" );
}};

...そしてあなたの他の例:

throw new MyException( myErrors.get( "failed_login_error" ) );
于 2009-12-15T18:10:08.717 に答える