0

プログラムを作成するときは、通常、java.util.Properties クラスを使用して、構成パラメーターを含むプロパティ ファイルを読み込みます。

私は通常、個々のプロパティを取得する get メソッドを持つユーティリティ クラスを作成します。たとえば、次のようになります。

public long getConnectionTimeout() {
   String textVal=getProperty("connectionTimeout", "1000");
   return Long.parseLong(textVal); 
}

この方法は私には合っていましたが、処理するプロパティのリストが長い場合は少し面倒です。

これを行うためのより良い方法を探しています。

ありがとう。

4

3 に答える 3

4

HashMap以下に示すように、プロパティ ファイルに関連付けられるプロパティを格納するために使用します。ユーティリティ クラスで、HashMapインスタンス フィールドを作成します。

HashMap<String,String> propertiesMap;

次に、コンストラクターまたは初期化メソッドで初期化します。

propertiesMap = new HashMap<String,String>();

プロパティ ファイルからのデータをハッシュマップに入力します。

for (String key : properties.stringPropertyNames()) 
{
    String value = properties.getProperty(key);
    propertiesMap.put(key, value);
}

次に、特定のプロパティをその名前で取得するジェネリック メソッドを記述します。

public String getProperty(String name)
{
    return propertiesMap.get(name);
}
于 2012-10-21T05:22:04.727 に答える
1

別の方法は、Enumsを使用することです。このようにして、定数を使用してプロパティに直接アクセスできます。

public static void main(String[] args) {
    System.out.println(Properties.USER_NAME.getValue(String.class));
    System.out.println(Properties.CONNECTIION_TIMEOUT.getValue(Integer.class));
}

enum Properties {
    CONNECTIION_TIMEOUT {
        @Override
        public <T> T getValue(Class<T> toClass) {
            return toClass.cast(1000);//your code goes here
        }
    },
    USER_NAME {
        @Override
        public <T> T getValue(Class<T> toClass) {
            return toClass.cast("Test");//your code goes here
        }
    },
    PASS_WORD {
        @Override
        public <T> T getValue(Class<T> toClass) {
            return toClass.cast("Test");//your code goes here
        }
    };
    public abstract <T> T getValue(Class<T> toClass);
}
于 2012-10-21T05:30:38.683 に答える
1

Java EE を使用している場合は、CDI (Contexts and Dependency Injection) を活用するこの方法を試すことができます: CDI を使用した Java EE 6 でのアプリケーションの構成

于 2012-10-21T05:21:15.383 に答える