私は大量の静的値を持つクラスを持っており、それらの 2 つが同じ値を持つ場合に Eclipse にエラーをスローさせるメカニズムが組み込まれているかどうかに興味があります。
そうでない場合、これに代わる合理的な代替手段は何ですか?
このようなものはどうですか?
import java.util.HashMap;
public class UniqueStaticVariables {
private final static UniqueHashMap<String,String> values =
new UniqueHashMap<String,String>();
static {
values.put("FIRST_VALUE", "a");
values.put("SECOND_VALUE", "b");
values.put("THIRD_VALUE", "a");
}
public static String get(String key) {
return values.get(key);
}
private static class UniqueHashMap<K,E> extends HashMap<K,E> {
@Override
public E put(K key, E value) {
if(!containsValue(value)) {
return super.put(key, value);
}
return null;
}
}
public static void main(String[] args) {
System.out.println(UniqueStaticVariables.get("FIRST_VALUE"));
System.out.println(UniqueStaticVariables.get("SECOND_VALUE"));
System.out.println(UniqueStaticVariables.get("THIRD_VALUE"));
}
}
これが 100% の解決策というわけではありませんが、少なくとも文字列定数の場合、public static enum を使用すると非常にうまく機能します...
public static enum labels{
A,
B,
C
};
これらはオーバーラップできず、文字列表現は を介して取得できます.name()
。
明らかに、実際に見えるもの以外の値を持つことはできませんが、実際には私の状況では完全に機能します。
私は列挙型に慣れていないので、この方法でこれを処理してはならない理由がある場合は、その理由を知りたいです。