JVM如何在实现Serializable接口时发出警告以添加串行版本ID?

时间:2016-03-09 06:43:10

标签: java

我们知道我们可以创建标记界面。假设我想创建一个标记界面,如Serializable interface。

如何强制JVM告诉用户添加Serializable接口时发生的串行版本ID?

我可以在文件处理或RMI调用中使用我们自己的标记接口而不是Serializable接口吗?

假设我的标记界面是

public interface SyncBean {}

如何让JVM需要添加serial版本ID来实现类?

1 个答案:

答案 0 :(得分:0)

它并不漂亮,但似乎编译器警告特定于movl %eax,-8(%ebp) 。正如您所看到的hereSerializable上没有特殊的注释或任何内容可以让它按照它的方式行事 - 行为被硬编码到Serializable中。

你能做什么(仍然使用界面)是:

javac

实施将如下所示:

public interface SyncBean {
    long getVersionID();
}

您可以在Java 8中创建这些public class MySyncable { long getVersionID() { return 142L; } }

另一个(更好)选项是使用注释:

static

实施如下:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface SyncBean {
    public long versionID();
}

Access看起来像这样:

@SyncBean(142L)
public class MySyncable {
}