Sobes.tech
Junior
42

Можно ли в переопределённом методе clone() подписать throws Exception, учитывая что он @Override?

Сұралған компаниялар
ИП Ганус Александр Андреевич

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 нельзя.