3

从Serializable接口的 JavaDoc 的第二段:

为了允许序列化不可序列化类的子类型,子类型可以负责保存和恢复超类型的公共、受保护和(如果可访问)包字段的状态。仅当它扩展的类具有可访问的无参数构造函数来初始化类的状态时,子类型才可以承担此责任。如果不是这种情况,则声明类 Serializable 是错误的。将在运行时检测到错误。

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

4

1 回答 1

2

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

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

于 2012-08-22T07:18:18.613 回答