ほとんどの場合、私はこの些細な使用例で何かを監督します。 私のコードは、クラス内の注釈付きフィールドを反復処理し、すべてのフィールドに対して、型に応じていくつかのコードを実行したいと考えています。例えば、予想通りjava.lang.reflect.Field getType()結果はequals()を使用する型と比較できません
if (type.equals(Boolean.class))
dosn't仕事:
はfield.setAccessible(true);
final Class<?> type = field.getType();
if (type.equals(Boolean.class)) {
field.set(this, Boolean.parseBoolean(property));
} else if (type.equals(Integer.class)) {
field.set(this, Integer.parseInt(property));
} else if (type.equals(String.class)) {
field.set(this, property);
} else {
LOGGER.warn("Cannot parse property -{}{}. Unknown type defined.", option.getOpt(),
field.getName());
}
しかし、このチェック:最も単純には値を設定するだけですprivate boolean isVerbose;
と定義されているフィールドの場合。 type
の検査の後、私はプロパティname
をただ"boolean"
としました。ここでBoolean.class
のプロパティname
は"java.lang.Boolean"
で埋められました。これらの対象は異なっていた。
このシナリオを正しく実装するにはどうすればよいですか? Javaでは