Я использую Java 7 и наткнулся на что-то очень интересное. Расширяя интерфейс java.lang.Appendable с помощью моего собственного интерфейса, я больше всего переопределяю каждый метод для целей документации.Удаление исключенного Java исключения при переопределении метода интерфейса?
Все три метода, определенные в java.lang.Appendable throws IOException, которые, как я думал, также должны были бы объявить мои переопределяющие методы. Тем не менее, я закончил удаление предложения throws на одном из переопределенных методов и, как ни странно, компилятор Java 7 не жаловался на недостающее объявление. Поэтому я пошел вперед и удалил предложение throws из двух других методов и снова, никаких жалоб от компилятора.
Итак, почему я могу переопределить метод в интерфейсе и удалить его предложение throws? И когда это явление стало законным на Java?
Почему бы ему не быть законным? Почему вы должны ошибочно объявлять, что ваш метод генерирует исключение, которое, как вы знаете, это не так? – shmosel
Я думал, если кто-нибудь скажет Appendable a = new MyInterfaceImpl(); что когда они сказали a.append («Foo»); их код все равно должен был бы попробовать IOException (что они будут). Но я предполагаю, что имеет смысл, что если MyInterface не бросает IOException для метода Appendable, тогда это нормально, потому что реализация MyInterface никогда не будет бросать IOException. Я был просто удивлен, увидев, что эта работа - все. Спасибо за понимание! –