Junior
Peut-on déclarer throws Exception dans la méthode clone() redéfinie, étant donné qu'elle est annotée @Override ?
sobes.tech IA
Réponse de l'IA
В 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 нельзя.