2013-03-16 2 views
0

Я пытаюсь соответствовать, если префикс спичка файл с моим объектом, но я получил ClassCastExceptionкласс исключения броска при попытке соответствовать startwith

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 

большое спасибо

+5

У вас не должно быть; непосредственно после теста. –

+6

Попробуйте очистить свой проект. Ошибка, которую вы опубликовали (возможно), отсутствует в коде, который вы опубликовали. – jlordo

+0

@dystroy, мое плохое; была опечатка. Конечно, нет. Я обновил свой код. Большое спасибо – user2177823

ответ

2

проблема, по-видимому, что listeClients является объявлен как List<com.dev.pojo.Clients>, но во время выполнения это фактически содержит a java.lang.Boolean. Благодаря тому, как реализованы дженерики (называемой "erasure"), виртуальная машина не может реально обнаружить это до тех пор, пока не попадает в

listeClients.get(i) 

, который она реализует, как

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

приводит к ClassCastException.

Вам необходимо найти и исправить код, который вставляет java.lang.Boolean в этот список; и вам, вероятно, нужно уделять больше внимания компилятору-предупреждениям, потому что ваш компилятор , вероятно, предупредил вас об этой возможности с предупреждающим сообщением о непроверенном актере.

(Кроме того, как уже отмечалось, необходимо удалить точку с запятой после if состояния. Но это не источник, за исключением вы публикуемую о, так как это имеет место до этой строки.)

+0

благодарю вас за помощь. У меня проблема. Объект моих клиентов реализует существенные (я разрабатываю на android), чтобы передать его через активность. Мой список содержит 2 элемента, но только первый передается через активность. Второе преобразуется в логическое, я не знаю, почему – user2177823

+0

@ user2177823: Круто, я рад, что мой ответ помог вам. :-) – ruakh

Смежные вопросы