3

この質問は使い方 についてではありませんSerializable、私はすでにそれを知っています。しかし、実装Serializableすると次の警告が表示されるのではないか

The serializable class MyClass does not declare a static final serialVersionUID field of type long

と思っていました。のようなインターフェイスを作成したいとしSerializableたら、インターフェイスを実装するプログラマーに変数を宣言するように「警告」するにはどうすればよいでしょうか。のソースコードを調べてみましたSerializable.javaが、この動作を引き起こすものは見つかりませんでした。これも可能ですか?

ありがとう!

4

2 に答える 2

5

あなたが探している振る舞いは、注釈と注釈プロセッサを使用してより適切に実装されると思います。コンパイラが宣言しないことについて警告するという事実はserialVersionUID、コンパイラレベルで別のメカニズムによって処理されます(したがって、プログラマの手の届かないところにあります)。Serializableこれは、インターフェイスを実装した結果というよりも、シリアル化APIによって適用されるコーディング規約です。

実際、ここではのソースコードを調べることがSerializableできます。ご覧のとおり、コンパイラの警告を強制するための特別なことは何もありません。

/* comments removed for brevity */
package java.io;
public interface Serializable {
}
于 2012-06-01T15:34:24.040 に答える
4

いいえ、私はそれが単なるJavaでは不可能だと思います(多分いくつかの注釈がありますか?それについてはよくわかりません)。

実際のところ、Serializableインターフェイスは通常のJavaインターフェイスではなく、タグ付け要素であり、インターフェイスとして使用されますが、特別なものであるため、コンパイラによって独自の方法で処理されます(その意味はインターフェイスなどの機能を表すため) 、デフォルトではコードに透過的に実装されていません)。

于 2012-06-01T15:35:18.597 に答える