コードで ClassCastException を受け取りました。refreshDetailVOTable メソッドは Set のみを取得するため、当初の目的は Set を List に変換することでした。Set から List への変換に問題があった可能性があります。refreshDetailVOTable が間違ったリストを取得した可能性があるため、ClassCastException が発生しています。
調査の結果、次のことが判明しました。
私はすべての生のタイプを使用してきました。代わりにジェネリックを使用する必要があります。これらは、コンパイル時にこの種のエラーを見つけるのに役立ちます。
メソッドは、パラメーター List detailIRsToDelete を受け取り、そこからイテレーターを取得し、次のように要素を反復処理します。
for (Iterator iDetails = detailIRsToDelete.iterator(); iDetails.hasNext();) {
IdentifiableReference detailIR = (IdentifiableReference) iDetails.next();
誤って IdentifiableReference 以外のものを detailIRsToDelete に入れ、ループ内の代入ステートメントで ClassCastException を取得した可能性があります。
次に、リスト パラメータを次のように宣言する必要があります。
List <IdentifiableReference> detailIRsToDelete
このリストに何かを入れる行為はコンパイラーによってチェックされ、後で実行時に経験するのではなく、コンパイル時にエラーのあるオブジェクトが追加された時点でエラーが発生します。
問題: これにより Class Cast Exception が解決されるはずですが、現在の JRE 1.4 では適用できませんでした。
アップグレード以外に JRE 1.4 の回避策はありますか?