レポ
クラウドで
伸びる人沈む人

連絡特定商取引将来設計運営方針&メルマガSEの彼女は?
成功レポート集 Fedora9インストール! EclipseでJava Oracleバックアップのアーキテクチャ ゼロからHPでCGI 便利ネット知識
無料レポ&講習 IT業界の実態 linux処方箋 Java処方箋 Oracle処方箋 Perl処方箋
ClassCastExceptionをコンパイル段階で強制回避

<IT技術の処方箋:ClassCastExceptionをコンパイル段階で強制回避>



例えば、↓のソースを実行すると、ClassCastExceptionが発生します。

public class GenericTypeTest {
public static void main (String args[]) throws IOException {

List list = new ArrayList();
Integer a1 = new Integer("1");
list.add(a1);
System.out.println( (String)list.get(0));

}
}


※何故エラーが出るかは、こちらを参照してください。
http://www.searchman.info/tips/2670.html


実行すると、「ClassCastException」エラーが出ます。
しかし、「このようなエラーを実行するまでに検知できないか?」「できたら、コンパイルで検知したい」と思いますよね。


その方法を知っておきましょう。
方法は、簡単です。以下のとおりにするだけです。



(現行)List list = new ArrayList();
 ↓
(改良)List<Integer> list = new ArrayList();



すると、↓の部分で、「キャストできません」とコンパイルエラーが出ます。
(String)list.get(0)


なので、その部分は、
list.get(0)
とすればOKです(戻り値が、と同じ型になるからです)。



この方法を、総称型(Generic Type)と言います。こういう「縛り」をつけることにより、コンパイル段階でバグを少なくすることが出来ます。

さらに補講教材があります。
以下をクリックしてください。

新人用Java勉強環境の準備

Servlet初心者が勘違いする「典型的な間違い」

クラウドで伸びる人沈む人 ||Copyright © 2005-2020 SearchMan,All Rights Reserved.