Junior
Se poate semna throws Exception în metoda suprascrisă clone(), având în vedere că este @Override?
sobes.tech AI
Răspuns de la 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 нельзя.