匿名初始化-奇怪的序列化警告

Shivan Dragon:

我想知道为什么当我将匿名实例化和实例初始化程序块一起使用时,得到“可序列化的类未声明类型为long的静态最终serialVersionUID字段”编译时警告。

这就是我的意思。假设我要实例化ArrayList并同时向其添加一些内容,如下所示:

ArrayList<Object> arrayList = new ArrayList<Object>(){{add(new Object());}}; 

如果我进行编译,一切都很好,但是我收到了serialVersionUID字段缺少警告的提示。现在,ArrayList已经实现了可序列化,并且有一个private static final long serialVersionUID原因,为什么当我像这样使用它时,似乎该字段“消失了”并且我收到未声明它的警告?

杰克·埃德蒙兹(Jack Edmonds):

创建匿名类时,实际上是在扩展ArrayList,因此继承了Serializable接口。

所有Serializable类都应该有一个,serialVersionUID以便您可以区分这些类的不同序列化版本。由于匿名类型是一个新类,因此最好为它提供一个ID,以便您可以区分它的不同版本。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章