这个问题不是关于如何使用 Serializable
的,我已经知道了。但是,我想知道实现如何Serializable
引发以下警告:
The serializable class MyClass does not declare a static final serialVersionUID field of type long
假设我想编写一个类似的接口Serializable
,我将如何“警告”实现我的接口的程序员声明一个变量?我试过查看源代码,Serializable.java
但找不到任何会导致这种行为的东西。这甚至可能吗?
谢谢!
问问题
294 次
2 回答
5
我认为使用注释和注释处理器可以更好地实现您正在寻找的行为。编译器警告您不要声明的事实serialVersionUID
是由编译器级别的不同机制处理的(因此,程序员无法做到);它更多的是由序列化 API 强制执行的编码约定,而不是实现Serializable
接口的结果。
事实上,在这里您可以检查源代码,Serializable
并且如您所见,强制编译器警告并没有什么特别之处:
/* comments removed for brevity */
package java.io;
public interface Serializable {
}
于 2012-06-01T15:34:24.040 回答
4
不,我认为仅使用 Java 是不可能的(也许有一些注释?不确定)。
事实是这个Serializable
接口不是一个普通的Java接口而是一个标记元素,它被用作一个接口但它是一个特殊的东西,所以它由编译器以自己的方式处理(因为它的含义表达了一种功能,就像接口,默认情况下不会在代码中透明地实现)。
于 2012-06-01T15:35:18.597 回答