インスタンスの初期化子ブロックと共に匿名インスタンス化を使用すると、「シリアル化可能なクラスは、long型の静的なfinalVersionUIDフィールドを宣言しません」というコンパイル時の警告が表示されます。匿名の初期化 - 奇妙なシリアル化の警告
ここに私の言いたいことがあります。のは、私はArrayListのをインスタンス化すると同時に、そのようにそれに何かを追加したいとしましょう:
ArrayList<Object> arrayList = new ArrayList<Object>(){{add(new Object());}};
私はこれをコンパイルする場合、すべてがOKですが、私はserialVersionUIDのフィールド不足している警告が表示されます。今ArrayListはすでにserializableを実装していて、private static final long serialVersionUID
を持っていますが、なぜ私はそれを使用してそのフィールドが「消え去っている」ように見え、宣言していないという警告が表示されますか?
これは単なる愚かです。今日、Javaのシリアライゼーションはほとんど使用されていませんが、そのような一般的な警告は不当です。そして**私はIDEを**準拠していないコンパイラ**と呼んでいるEclipseユーザーを乗り越えることはできません。 – irreputable
関連:[明白なserialVersionUIDは有害だと思っていますか?](http://stackoverflow.com/questions/419796/explicit-serialversionuid-considered-harmful) –
@irreputableこれを抑制するアノテーションはありませんか?私は、チェックされていないキャストのためにそうすることができれば、確かにUIDのようなものは無視できると思うでしょう。 –