あなたは、この使用して反射を行うが、すべての可能な例外を認識することができます:ここ々BeanUtilsの#のcopyPropertiesを見て、1文で多くのフィールドを割り当てる方法については
import java.lang.reflect.*;
class Colors {
public static int COLOR1 = 123;
public static int COLOR2 = 321;
}
public class Test3 {
public static void modify(Class<?> clazz) throws IllegalAccessException {
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
if (Modifier.isStatic(f.getModifiers())) {
f.setInt(f, 666);
}
}
}
public static void main(String[] args) throws Exception {
System.out.println("Before: " + Colors.COLOR1);
System.out.println("Before: " + Colors.COLOR2);
modify(Colors.class);
System.out.println("After: " + Colors.COLOR1);
System.out.println("After: " + Colors.COLOR2);
}
}
しかし、私はこれがクリーンな解決策ではないと思います。これは依存関係を隠し、実際にOOPのようなものではありません。各色のゲッターを定義するインタフェースを使用する必要があります。次に、このインタフェースから2つのクラスを実装できます。通常の色のクラスと、カラーブラインドの色のクラスです。 アプリケーション設定をロードするときに、ユーザー設定に応じてこれらのクラスのインスタンスを作成します。
私たちが参照したり提案したりできる基本的なシーン(コード)を教えてもらえればいいと思います。 – Smit
[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)が役立ちます。 –