Back to questions
Junior
23
Можно ли в переопределённом методе clone() подписать throws Exception, учитывая что он @Override?
Companies where asked
ИП Ганус Александр Андреевич
Answer from AI
sobes.tech AI
В Java при переопределении метода clone(), который объявлен в классе Object с сигнатурой:
protected Object clone() throws CloneNotSupportedException
вы не можете расширить список проверяемых исключений (checked exceptions). То есть, если вы переопределяете этот метод, вы можете:
- Не объявлять
throwsвовсе, - Или объявить
throws CloneNotSupportedExceptionили его подкласс, - Но не можете добавить
throws Exception, так как это более общее исключение.
Если попытаться подписать throws Exception, компилятор выдаст ошибку, так как метод с аннотацией @Override должен строго соответствовать или сужать сигнатуру базового метода.
Пример правильного переопределения:
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
Таким образом, подписывать throws Exception нельзя.