Пересмешивание java-объектов дает исключения приведения классов
У меня есть интерфейс fly
и класс duck
который реализует fly
,
interface Fly {
getWingSize();
}
public class Duck implements Fly {
@Override
int getWingSize(){
return 1;
}
}
В моем классе контроллера, когда я пытаюсь использовать следующее:
Fly flyAnimal = Animal.getFlyingAnimal();
((Duck) flyAnimal).getWingSize();
Это работает хорошо, однако в моем junit, это дает исключение приведения класса. Я использую powermockito.
1 ответ
В вашем коде вы приводите конкретный класс (утка). В общем, вы бы издевались над интерфейсами. Ваш тестовый пример мог иметь поддельный интерфейс.
Он должен работать нормально, если вы замените ((duck) fly).getWingSize();
с fly.getWingSize();