如何抑制初始化和操作最终静态变量的静态块的串行警告?
How to suppress serial warning for a static block where a final static variable is initialized and manipulated?
我有一个
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());
}
TypeToken
(guava
18.0)中缺少的 serialVersionUID
导致 [serial]
警告,我想取消警告,因为它没有用。我想避免将 @SuppressWarnings("serial")
添加到 class 中,因为它太宽泛了。静态块和声明都不接受 @SuppressWarnings
注释。我不能将初始化移动到静态方法,因为其他常量可能尚未初始化(编译器错误)。
我正在使用 Java 1.7.
不要使用静态块:
@SuppressWarnings("serial")
public final static java.util.List VAR = new java.util.LinkedList() {
...
};
这是一种可能性:
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());
}
我有一个
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());
}
TypeToken
(guava
18.0)中缺少的 serialVersionUID
导致 [serial]
警告,我想取消警告,因为它没有用。我想避免将 @SuppressWarnings("serial")
添加到 class 中,因为它太宽泛了。静态块和声明都不接受 @SuppressWarnings
注释。我不能将初始化移动到静态方法,因为其他常量可能尚未初始化(编译器错误)。
我正在使用 Java 1.7.
不要使用静态块:
@SuppressWarnings("serial")
public final static java.util.List VAR = new java.util.LinkedList() {
...
};
这是一种可能性:
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());
}