В рамках нашей домашней работы нам предлагается реализовать абстрактный класс с помощью метода clone
. Рамка для функции дана:
/**
* @effects Creates and returns a copy of this.
*/
public Object clone() {
// TODO: Implement this method
}
Класс Shape
имеет два поля:
private Point location;
private Color color;
В инструкциях нам говорят, что метод не генерирует исключение CloneNotSupportedException
, а также спрашивают, почему это так. Во всех примерах, которые мы видели в интернете, метод клонирования выдает CloneNotSupportedException
.
Не могли бы вы указать нам причину, по которой этот метод клонирования не должен вызывать это исключение.
Метод, который мы написали:
/**
* @effects Creates and returns a copy of this.
*/
public Object clone() {
Shape new_shape = (Shape)super.clone();
new_shape.setColor(this.getColor());
new_shape.location = (Point)location.clone();
return new_shape;
}
Это дает нам ошибку со стороны (Shape)super.clone()
, говоря:
Unhandled exception type CloneNotSupportedException
, как мы должны создать метод клонирования?