「しないでください」と言っている人は自由に無視してください。私たちよりもあなたのコードと要件をよく知っています。
あなたが探しているものは、Javaでは「リフレクション」と呼ばれています。 JSONのキーと値のペアをループして、リフレクションを使用してフィールドをルックアップし、フィールドを値に設定することができます。
This questionには、それを行う方法について細かい説明があります。
次に、static initializeブロックを使用して、インポート関数を開始します。
幸運を祈る!
EDIT:
いくつかのサンプルコードは、これが唯一のジェームズ・ゴスリングが今まで試みるべきいくつか読めない、複雑な、クレイジー恐ろしい、無良い、非常に、悪い考えではありません表示します。 :)
import java.lang.reflect.*;
import net.sf.json.*;
public class Test {
public static String hello = null;
static JSONObject readConfig() {
// fake read a config file
String settings = "{\"hello\": \"world\"}";
JSONObject obj = (JSONObject)JSONSerializer.toJSON(settings);
return obj;
}
static {
// load config into static variables
JSONObject config = Test.readConfig();
for (Object key : config.keySet()) {
String value = config.getString((String)key);
try {
Field field = Test.class.getDeclaredField((String)key);
field.set(null, value);
System.out.println("Set '"+ key +"' to '"+ value +"'.");
} catch (Exception e) {
System.err.println("Could not set unknown prop '"+ key +"' because "+ e +".");
}
}
}
public static void main(String[] args) {}
}
そして、それが実行されている:
$ javac -cp .:/usr/share/java/* Test.java
$ java -cp .:/usr/share/java/* Test
Set 'hello' to 'world'.
どのように** not **?あなたがやっていることは、より良いデザインです。 –
プロパティオブジェクトをクラスに渡しても問題ありませんか?申し訳ありませんが、私は自分のデザインパターンに自信がありません。 –
'static'、' 'f''以外のデータに依存するものは全て、悪臭コードです。もちろん、オブジェクトが計算に依存しているデータは、積極的にそれらに提供され、取得するための静的な格納場所にはドロップされません。 –