0

ファイルプレフィックスがオブジェクトと一致するかどうかを一致させようとしていますが、classcastexceptionが発生しました

 for (int i=0;i<files.length;i++)
        {
            File f= files[i];
            String s=listeClients.get(i).getShortname();
            if(f.getName().startsWith(s))
            {
            System.out.println("file: " + f.getName());
            }
        }

startwithメソッドに文字列を渡すので、なぜこのエラーが発生したのかわかりません。

Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.dev.pojo.Clients

どうもありがとうございます

4

1 に答える 1

2

問題は明らかにそれlisteClientsがとして宣言されていることですList<com.dev.pojo.Clients>が、実行時に実際には が含まれていjava.lang.Booleanます。ジェネリックの実装方法 ( 「消去」と呼ばれる) が原因で、JVM は実際にこれを検出することができません。

listeClients.get(i)

として実装します

((com.dev.pojo.Clients)(listeClients.get(i))

になりClassCastExceptionます。

java.lang.Booleanこのリストにa を挿入するコードを見つけて修正する必要があります。また、おそらくコンパイラの警告にもっと注意を払う必要があります。これは、コンパイラが、チェックされていないキャストに関する警告メッセージでこの可能性について警告した可能性があるためです。

(さらに、他の人が指摘しているように、if条件の後にセミコロンを削除する必要があります。ただし、その行の前に発生するため、投稿した例外の原因ではありません。)

于 2013-03-16T19:37:28.843 に答える