Sobes.tech
Junior

Kann man in der überschriebenen Methode clone() throws Exception angeben, wenn sie mit @Override gekennzeichnet ist?

sobes.tech KI

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