我们知道可以创建标记界面。假设我想创建一个标记接口,例如Serializable
接口。
如何强制JVM通知用户添加序列号ID,如Serializable
接口那样?
我可以在文件处理或RMI调用中使用我们自己的标记器接口代替Serializable
接口吗?
假设我的标记界面是
public interface SyncBean {}
如何使JVM需要添加
serial
版本ID来实现类? 最佳答案
它不是很漂亮,但似乎编译器警告特定于Serializable
。如您所见,here中,Serializable
上没有特殊的注释或任何使它按其行为方式进行的行为-该行为被硬编码为javac
。
您可以做的(仍然使用界面)是这样的:
public interface SyncBean {
long getVersionID();
}
实现看起来像这样:
public class MySyncable {
long getVersionID() { return 142L; }
}
您可以在Java 8中创建这些
static
。另一个(更好)的选择是使用注释:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface SyncBean {
public long versionID();
}
实现看起来像这样:
@SyncBean(142L)
public class MySyncable {
}
访问看起来像这样:
MySyncable.class.getAnnotation(SyncBean.class).versionID();
关于java - 在实现Serializable接口(interface)时,JVM如何发出警告以添加串行版本ID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35884715/