为什么编译器在编译时无法检测到有关 Serialized 声明的错误?

问题描述 投票:0回答:1

摘自Serialized接口的JavaDoc第二段:

为了允许不可序列化类的子类型被序列化, 子类型可能承担保存和恢复状态的责任 超类型的 public、protected 和(如果可访问)包 字段。仅当类 它扩展了一个可访问的无参数构造函数来初始化 类的状态。如果出现以下情况,则声明类可序列化是错误的 事实并非如此。该错误将在运行时被检测到。

为什么编译时检测不到这个错误?

java exception serialization
1个回答
2
投票

编译器旨在根据语言的要求而不是单个库来检查代码。可以更改语言以添加执行额外检查的关键字或注释,理论上图书馆可以使用这些。

如果编译器能够以加载注释(目前纯粹是数据)的方式运行特定于库的检查代码,那么有用的是,这样就可以在编译时执行额外的检查,而无需知道任何单个库的行为。

© www.soinside.com 2019 - 2024. All rights reserved.