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

时间:2012-08-22 07:10:30

标签: java exception serialization compiler-construction

来自JavaDoc of Serializable界面的第二段:

  

要允许序列化非序列化类的子类型,   子类型可能承担保存和恢复状态的责任   超类型的公共,受保护和(如果可访问)包   领域。只有在类中,子类型才可以承担此责任   它扩展了一个可访问的无参数构造函数来初始化   阶级的国家。如果这样,声明一个Serializable类是错误的   事实并非如此。将在运行时检测到错误。

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

1 个答案:

答案 0 :(得分:2)

编译器旨在根据语言的要求检查代码,而不是单个库。可以更改语言以添加执行附加检查的关键字或注释,并且库可以在理论上使用它们。

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