我们知道我们可以创建标记界面。假设我想创建一个标记界面,如Serializable
interface。
如何强制JVM告诉用户添加Serializable
接口时发生的串行版本ID?
我可以在文件处理或RMI调用中使用我们自己的标记接口而不是Serializable
接口吗?
假设我的标记界面是
public interface SyncBean {}
如何让JVM需要添加serial
版本ID来实现类?
答案 0 :(得分:0)
它并不漂亮,但似乎编译器警告特定于movl %eax,-8(%ebp)
。正如您所看到的here,Serializable
上没有特殊的注释或任何内容可以让它按照它的方式行事 - 行为被硬编码到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 {
}