0

私は大量の静的値を持つクラスを持っており、それらの 2 つが同じ値を持つ場合に Eclipse にエラーをスローさせるメカニズムが組み込まれているかどうかに興味があります。

そうでない場合、これに代わる合理的な代替手段は何ですか?

4

4 に答える 4

1

このようなものはどうですか?

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"));
  }
}
于 2013-10-23T19:33:07.183 に答える
0

これが 100% の解決策というわけではありませんが、少なくとも文字列定数の場合、public static enum を使用すると非常にうまく機能します...

public static enum labels{
 A,
 B,
 C
};

これらはオーバーラップできず、文字列表現は を介し​​て取得できます.name()

明らかに、実際に見えるもの以外の値を持つことはできませんが、実際には私の状況では完全に機能します。

私は列挙型に慣れていないので、この方法でこれを処理してはならない理由がある場合は、その理由を知りたいです。

于 2013-10-23T19:59:16.707 に答える