我有一个用于过滤项目的界面:
public interface KeyValFilter extends Serializable {
public static final long serialVersionUID = 7069537470113689475L;
public boolean acceptKey(String iKey, Iterable<String> iValues);
public boolean acceptValue(String iKey, String value);
}
和一个包含type成员的类KeyValFilter
。
public class KeyValFilterCollector extends KeyValCollectorSkeleton {
private static final long serialVersionUID = -3364382369044221888L;
KeyValFilter filter;
public KeyValFilterCollector(KeyValFilter filter) {
this.filter=filter;
}
}
当我尝试KeyValFilterCollector
使用实现的匿名类来初始化时KeyValFilter
:
new KeyValFilterCollector(new KeyValFilter() {
private static final long serialVersionUID = 7069537470113689475L;
public boolean acceptKey(String iKey, Iterable<String> iValues) {
for (String value : iValues) {
if (value.startsWith("1:"))
return true;
}
return false;
}
public boolean acceptValue(String iKey, String value) {
return value.startsWith("0:");
}
});
我有一个例外:Exception in thread "main" java.io.NotSerializableException
。
如何使我编写的匿名类可序列化?
约书亚·布洛赫(Joshua Bloch)在他的《有效的Java,第二版》第74项中写道:
内部类不应实现
Serializable
。它们使用编译器生成的综合字段来存储对封闭实例的引用,并存储来自封闭范围的局部变量的值。这些字段与类定义的对应方式以及匿名类和本地类的名称均未指定。因此,内部类的默认序列化形式是illdefined。一个静态成员类可以,但是,实施Serializable
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句