3

SerializableインターフェイスのJavaDocの2番目の段落から:

シリアル化できないクラスのサブタイプをシリアル化できるようにするために、サブタイプは、スーパータイプのパブリック、保護、および(アクセス可能な場合)パッケージフィールドの状態を保存および復元する責任を負う場合があります。サブタイプがこの責任を負うのは、サブタイプが拡張するクラスに、クラスの状態を初期化するためのアクセス可能な引数なしのコンストラクターがある場合のみです。そうでない場合、クラスSerializableを宣言するのはエラーです。エラーは実行時に検出されます。

コンパイル時にこのエラーを検出できないのはなぜですか?

4

1 に答える 1

2

コンパイラは、個々のライブラリではなく、言語の要件に基づいてコードをチェックするように設計されています。言語を変更して、追加のチェックを実行するキーワードまたは注釈を追加することができ、ライブラリは理論的にそれらを使用できます。

コンパイラがアノテーション(現在は純粋にデータ)をロードできる方法でライブラリ固有のチェックコードを実行できると便利です。このようにして、個々のライブラリの動作を知らなくても、コンパイル時に追加のチェックを実行できます。

于 2012-08-22T07:18:18.613 に答える