DevGoD 342 Опубликовано 16 сентября, 2013 Собственно сабж. Понадобилась реализация: for(NpcInstance npc : getNpcs()) { DefaultAI ai = (DefaultAI) npc.getAI(); if(ai != null) ai.setMaxPursueRange(Integer.MAX_VALUE); } Где npc.getAI() принадлежит CharacterAI. Однако при запуске данной конструкции, получаем: Exception: RunnableImpl.run(): sw.awaken.gameserver.ai.CharacterAI cannot be cast to sw.awaken.gameserver.ai.DefaultAI Как можно беспроблемно прокастовать CharacterAI в DefaultAI? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 16 сентября, 2013 (изменено) никак, ибо ты пытаешься родительский класс скастовать к дочернему, а это в принципе невозможно - допустима лишь обратная ситуация. и к тому же я совершенно не могу представить ситуации, где бы такое потребовалось - дочерний класс же и так содержит в себе все из родительского и ничего не мешает вызывать в дочернем классе protected и public методы и переменные объявленные в родительском. Изменено 16 сентября, 2013 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 16 сентября, 2013 Проблема вся в том, что getAI() из NpcInstance оверрайдится как CharacterAI, посему, я чуть не понимаю, что и как нужно изменить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты