Несоответствие типов: невозможно преобразовать тип элемента Object в EnderPearl.

Итак, у меня проблема... Название в основном объясняет ошибку. Но я понятия не имею, как это исправить. Так что был бы рад, если бы вы могли мне помочь.

          if (cause == PlayerTeleportEvent.TeleportCause.ENDER_PEARL)
      {
        ArrayList pearls = (ArrayList)this.ender.get(e.getPlayer());

          if (pearls != null)
          {
              Location to = e.getTo();
              for (EnderPearl p : pearls) //**Error is here. ("pearls")**
              {
                  if ((p != null) && (p.getLocation().distanceSquared(to) < 2.0D))
                  {
                      pearls.remove(p);
                      e.setCancelled(true);
                      return;
                      }
                  }
              }
          }

person Alfanan123    schedule 09.07.2014    source источник
comment
Решение: не используйте необработанные типы.   -  person awksp    schedule 09.07.2014
comment
Ваш массив содержит объекты. Вам нужно привести к EnderPearl, если реальная коллекция не имеет тип ArrayList<EnderPearl>   -  person William Morrison    schedule 09.07.2014
comment
жемчужины ArrayList‹EnderPearl›?   -  person redFIVE    schedule 09.07.2014
comment
хаха, не понял. Спасибо, парни. Я исправил это, просто сделав, как вы сказали: Изменил это на: ArrayList‹EnderPearl› pearls = blablabla   -  person Alfanan123    schedule 09.07.2014


Ответы (1)


В вашем коде вы используете необработанные типы, где вам лучше использовать следующий код для определения вашего списка массивов:

ArrayList<EnderPearl> pearls = (ArrayList)this.ender.get(e.getPlayer());

И тогда вам не придется беспокоиться о кастинге или чем-то еще!

person William Reed    schedule 10.07.2014