Пересмешивание 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();

Другие вопросы по тегам