Java で ClassCastException を解決するにはどうすればよいですか?

Java De Classcastexception Wo Jie Juesurunihadousurebayoidesuka



Javaでは、「 クラスキャスト例外 」は、開発者が開発段階の早い段階で型互換性の問題を発見できるようにすることで、実行時に型互換性の問題を特定するのに役立ちます。また、型の安全性も確保され、プログラムの不整合が防止されます。 ClassCastException は、デバッグ、テスト、正しい型キャストなどのプロセスで非常に役立ちます。

このガイドでは、Java で ClassCastException を解決する手順を説明します。







Java で ClassCastException はどのように発生するのでしょうか?

クラスキャスト例外 」は、適切な型キャストを保証し、互換性のない型変換によって引き起こされる実行時エラーを防ぎます。簡単に言えば、この例外は、オブジェクトを互換性のない型にキャストしようとするとスローされます。



たとえば、「」に関する以下のコードを参照してください。 クラスキャスト例外 ” Java では:



輸入 java.io.* ;
輸入 java.lang.* ;
輸入 java.util.* ;

クラス Linuxヒント {
//ドライバークラスの作成
公共 静的 空所 主要 ( [ 引数 )
{
試す {
物体 = 新しい 物体 ( ) ;

子供 = ( ) ;
システム プリントイン ( 子供 ) ;
}
キャッチ ( 例外 f ) {
システム プリントイン ( f ) ;
}
}
}

上記のコードの説明:





  • の中に ' 試す 「ブロック、オブジェクトのインスタンス」 」を利用して宣言します。 新しい 」というキーワード。
  • その後、タイプキャストが利用されます。 物体 ” タイプはタイプキャストされており、” という名前が付いています。 子供 ”。
  • この型キャストは、親クラスをその子クラスに型キャストしてはならないというルールに違反しています。だからこそ例外が生じるのです。 物体 ” タイプは親クラスです。
  • 結局のところ、「 キャッチ ” を取るブロックが使用されます” 例外 ” をパラメータとして指定し、コンソールにメッセージを出力します。

実行フェーズの終了後:



上のスナップショットは、Java での ClassCastException の発生を示しています。

Java で ClassCastException を解決するにはどうすればよいですか?

開発者が簡単に解決できる、または「 クラスキャスト例外 」はJavaで。

これらのソリューションについては、以下で個別に説明します。

解決策 1: 「instanceof」演算子の使用

インスタンスの ” オペレータは、” 物体 」は、目的のタイプのインスタンスであるかどうかです。この検証は、「」の発生を防ぐのに役立ちます。 クラスキャスト例外 ”。たとえば、以下のコード ブロックにアクセスしてください。

公共 クラス TypeCheckingLinuxヒント {
公共 静的 空所 主要 ( [ 引数 ) {

物体 = 「Linuxヒントファミリー」 ;
もしも ( インスタンスの ) {
子供 = ( ) ;
システム プリントイン ( '文字列を型キャストした後:' + 子供 ) ;
} それ以外 {
システム プリントイン ( 「オブジェクトは目的の型 String のインスタンスです。」 ) ;
}
}
}

上記のコードの説明:

  • まず、「 ” オブジェクトが作成され、” 内のダミー値で初期化されます。 試す ' ブロック。
  • 次に、 'もしも' 「」が含まれるステートメント インスタンスの ” 演算子は、” のインスタンスをチェックするために使用されます。 「希望のオブジェクト」 ' タイプ。
  • 次に、条件が「」を返した場合、 真実 」 タイプキャストが実行され、コンソールに表示されます。
  • それ以外の場合は、カスタム エラー メッセージがコンソールに表示されます。

実行フェーズの終了後:

スナップショットは、型キャストが正常に完了し、ClassCastException が「」を使用して解決されたことを示しています。 インスタンスの 」オペレーター。

解決策 2: 型キャスト操作を確認して修正する

もう 1 つの解決策は、コードを複数回チェックし、型キャストに互換性のある型を確認することです。たとえば、以下のコードにアクセスしてください。 クラスキャスト例外 」は、型キャストに必要な型に互換性がないために逮捕されます。

公共 クラス TypeCheckLinuxHint {
公共 静的 空所 主要 ( [ ] 引数 ) {
物体 = 「Linuxヒントファミリー」 ;
整数 変換された数値 = ( 整数 ) ;
システム プリントイン ( 「タイプキャスト後の数値:」 + 変換された数値 ) ;
}
}

上記のコードでは、プログラマが誤って「」をキャストしました。 ' に ' 整数 ”。

コンパイルフェーズの終了後:

上記のスナップショットは、ClassCastException の発生を示しています。

解決策 3: ジェネリック医薬品の使用

プログラマーは「」を使用できます。 ジェネリック医薬品 」を使用して、予期される型を指定し、コンパイル時に型の安全性を強制します。

たとえば、以下のコードにアクセスしてください。

輸入 java.util.ArrayList ;
輸入 java.util.List ;

公共 クラス ジェネリックを使用 {
公共 静的 空所 主要 ( [ 引数 ) {
リスト < > 従業員名 = 新しい 配列リスト <> ( ) ;
従業員名。 追加 ( 「ハリー」 ) ;
従業員名。 追加 ( 「ポッター」 ) ;

イニシャル = 従業員名。 得る ( 0 ) ;
最後の = 従業員名。 得る ( 1 ) ;

システム プリントイン ( 'ファーストネーム: ' + イニシャル ) ;
システム プリントイン ( 'ミドルネーム: ' + 最後の ) ;
}
}

上記のコードの説明:

  • まず、必要なユーティリティが Java ファイルにインポートされ、「 ジェネリックを使用 ”と宣言されています。
  • 次に、「 配列リスト 「タイプ」の ” は” という名前で宣言されます。 従業員名 」を作成し、2 つのダミー データ要素を指定して初期化します。
  • 次に、「」という名前の文字列型変数を 2 つ作成します。 イニシャル ' と ' 最後の ”。その後、インデックス番号にアクセスして値を割り当てます。
  • 最後に、両方の変数を表示して結果を確認します。

実行終了後の出力は次のようになります。

上記のスナップショットは、ジェネリックを使用して型キャストが実行されたことを示しています。

結論

「」を解決するには クラスキャスト例外 Java では、プログラマは適切な型の互換性を確保し、「」を使用する必要があります。 ジェネリック医薬品 ' そしてその ' インスタンスの 」オペレーター。例外を解決するには、プログラマは適切な型の互換性を確保してキャスト操作を確認し、修正する必要があります。しかも、この「 クラスキャスト例外 「」を使用することで回避できます。 ジェネリック医薬品 」と「」を使用して インスタンスの 」オペレーター。このガイドでは、Java で ClassCastException を解決する方法を説明しました。