gpt4 book ai didi

java - 实现 Serialized 接口(interface)时,JVM 如何发出添加串行版本 id 的警告?

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:27 25 4
gpt4 key购买 nike

我们知道我们可以创建标记界面。假设我想创建一个标记接口(interface),例如 Serialized 接口(interface)。

如何强制 JVM 告诉用户添加串行版本 ID,就像 Serialized 接口(interface)那样?

我可以在文件处理或 RMI 调用中使用我们自己的标记接口(interface)来代替 Serialized 接口(interface)吗?

假设我的标记界面是

public interface SyncBean {}

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

最佳答案

这不太漂亮,但编译器警告似乎是特定于 Serialized 的。如您所见hereSerialized 上没有特殊注释或任何内容来使其按其方式运行 - 该行为被硬编码到 javac 中。

您可以做的(仍然使用界面)是这样的:

public interface SyncBean {
long getVersionID();
}

实现如下:

public class MySyncable {
long getVersionID() { return 142L; }
}

您可以在 Java 8 中将这些设置为静态

<小时/>

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

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 - 实现 Serialized 接口(interface)时,JVM 如何发出添加串行版本 id 的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35884715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com