这个问题不是关于如何使用 Serializable
,我已经知道了。但是,我想知道实施Serializable
如何提出以下警告:
The serializable class MyClass does not declare a static final serialVersionUID field of type long
假设我想编写一个像Serializable
这样的接口,我如何“警告”程序员实现我的接口来声明一个变量?我已经尝试查看Serializable.java
的源代码,但我找不到任何会导致此行为的内容。这有可能吗?
谢谢!
答案 0 :(得分:5)
我认为使用注释和注释处理器可以更好地实现您正在寻找的行为。编译器警告您不声明serialVersionUID
的事实由编译器级别的不同机制处理(因此,程序员无法访问);它更像是序列化API强制执行的编码约定,而不是实现Serializable
接口的结果。
事实上,here您可以检查Serializable
的源代码,正如您所看到的,强制编译器警告没有什么特别之处:
/* comments removed for brevity */
package java.io;
public interface Serializable {
}
答案 1 :(得分:4)
不,我不认为只用Java(可能有一些注释?不确定)。
事实是Serializable
接口不是普通的Java接口,而是更多的标记元素,它用作接口,但它是特殊的,所以它在它的处理编译器自己的方式(因为它的含义表示一个功能,比如接口,默认情况下在代码中没有透明地实现)。