SOの質問をたくさん読んだのですが、答えが見つからないようです。
私は次のクラスを持っています:
public class DatabaseStrings {
public static final String domain =
"CREATE TABLE IF NOT EXISTS domain (" +
"_id INT UNSIGNED, " +
"account VARCHAR(20) NOT NULL DEFAULT '', " +
"domain TINYINT(1) DEFAULT 0, " +
"domain_string VARCHAR(20) DEFAULT '', " +
"user_id INT UNSIGNED DEFAULT 0" +
");";
}
そして他の場所では、私はこれらの文字列にアクセスしようとしています:
for(Field field : DatabaseStrings.class.getDeclaredFields()) {
field.setAccessible(true); // I don't know if this is necessary, as the members are public
System.out.println(field.getName());
System.out.println(field.getType());
String value = (String) field.get(null); // This line throws an IllegalAccessException inside Eclipse.
// Do something with value
}
IllegalAccessExceptionが発生するのはなぜですか?field.get行を削除すると、LogCatに次の行が表示されます。
System.out | domain
System.out | class java.lang.String
参照:
リフレクションを使用してJavaでメンバー変数値を取得する際の落とし穴