匿名类上的NotSerializableException

沙哈格:

我有一个用于过滤项目的界面:

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

如何使我编写的匿名类可序列化?

马丁·霍勒(MartinHöller):

约书亚·布洛赫(Joshua Bloch)在他的《有效的Java,第二版》第74项中写道

内部类不应实现Serializable它们使用编译器生成的综合字段来存储对封闭实例的引用,并存储来自封闭范围的局部变量的值。这些字段与类定义的对应方式以及匿名类和本地类的名​​称均未指定。因此,内部类的默认序列化形式是illdefined一个静态成员类可以,但是,实施Serializable

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章