Java的@Serial批注

JDK可能正在使用JDK 11@Serial获得另一个标准(预定义)注释JDK-8202385 [“标记与序列相关的字段和方法的注释”]的目的是添加“某种“ SerialRelated”注释,以促进对序列字段和方法的声明的自动检查。” 这个想法是为了更好地向开发人员指示与序列化相关的字段或方法的拼写错误,类似于“使用java.lang.Override批注类型来指示编译器应验证该方法实际上被覆盖”的方式。

Joe Darcy 最近要求对“ webrev ”(建议的代码添加) 进行审查 。 这提供了@Serial外观。 当前的建议是将此注释定义驻留在java.io包中 ,以特定的方法字段目标 ,并具有SOURCE 保留

对于@Serial建议定义, Javadoc注释当前提供了有关如何使用此注释的重要详细信息。 此Javadoc还明确指定了预期使用@Serial进行注释的方法和字段: writeObject()readObject()readObjectNoData()writeReplace()readResolve()ObjectStreamField []serialVersionUID

建议的@Serial批注将在执行javacserial ” lint检查时进行检查。 在Darcy的电子邮件审核请求中对此进行了描述:

拟议的java.io.Serial批注类型旨在与javac的“串行” lint检查的增强实现一起使用。 该工作将作为JDK-8202056的一部分单独完成:“扩展串行警告以检查与串行相关的方法的严重过载”。

有趣的是,该注解的名称不一定要最终确定,尽管它似乎很可能会保留下来。 达西的电子邮件指出,还可以使用其他名称,例如@Serialize@SerialRelated

一个有趣的区别是, @Serial批注不能或不应与Externalizable接口的某些方法和某些字段一起使用(扩展Serializable ),因为这些方法和字段未在Externalizable中使用 。 在这种区别的更多细节在核心库-dev的相关信息提供053060053061053064053067

@Serial ,尚未正式为JDK 11计划@Serial批注,但考虑到JDK-8202385的最新进展,它似乎可以及时在JDK 11版本中使用 。 除了此批注对实现自定义序列化的潜在用途之外,此批注的定义还将提供另一个示例,说明如何记录任何自定义批注以使其正确使用。

翻译自: https://www.javacodegeeks.com/2018/05/javas-serial-annotation.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值