ArrayList は、javadocs ごとにシリアライズ可能です (コレクション クラスの多くは、含まれているオブジェクトがそうである限り)、ジェネリック型がシリアライズ可能である限り、シリアライゼーション側が機能します。 ArrayList
微妙なキャストです。一般的に、それは安全ではないと考えられます。あなたが持っていたら
List<Specific>
あなたはそれをキャストすることはできません
List<Generic>
それらは論理的には同じではありません (実際には実行時に同じであったとしても)。実際、プログラムでのそのような直接キャストは問題があります。これは有効だからです。
List<Specific> specific = ...;
List<Generic> generic = (List<Generic>) specific;
generic.add(new OtherImplExtendingGeneric());
specific.get(specific.length() -1).methodOnlyOnSpecific(); // Kersplode
しかし、あなたはそれをオブジェクトとして扱っており、他のタイプへの他の参照がないため、うまくいきます。それはあなたがそれをするのを妨げません。それは技術的に望ましい結果を生み出します。それには理由があるかもしれませんが、コード レビューで眉をひそめることは間違いありません。
ジェネリック型をキャストする必要があるのはなぜですか?