如何抑制初始化和操作最终静态变量的静态块的串行警告?

时间:2015-09-19 09:49:02

标签: java java-7

我有一个

public final static java.util.Map<String, Type> VAR;
static {
    VAR = new java.util.HashMap<>();
    VAR.put("a", new com.google.common.reflect.TypeToken<List<Integer>>(){}.getType());
}

serialVersionUIDTypeToken 18.0)中遗失的guava导致[serial]警告,我想要压制它,因为它没用。我想避免在课堂上添加@SuppressWarnings("serial"),因为它太宽泛了。静态块不是声明都不接受@SuppressWarnings注释。我可以'将初始化移动到静态方法,因为其他常量可能尚未初始化(编译器错误)。

我正在使用Java 1.7。

2 个答案:

答案 0 :(得分:1)

这是一种可能性:

  public final static Map<String, Type> VAR;

  private static Type listOfIntegerType()
  {
      @SuppressWarnings("serial")
      TypeToken<List<Integer>> t = new TypeToken<List<Integer>>(){};
      return t.getType();
  }

  static {
      VAR = new HashMap<>();
      VAR.put("a", listOfIntegerType());
  }

答案 1 :(得分:0)

不要使用静态块:

@SuppressWarnings("serial")
public final static java.util.List VAR = new java.util.LinkedList() {
   ...
};