Метод clone() определён в классе Object, а не в интерфейсе Cloneable. Это важное отличие в механизме клонирования объектов в Java.
Cloneable — это маркерный интерфейс, который служит определённой цели:
clone()Чтобы правильно реализовать клонирование в Java, следуй этому паттерну:
public class MyClass implements Cloneable {
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
clone() происходит из класса ObjectCloneable — это просто соглашение, которое показывает, что клонирование разрешеноCloneable вызов clone() бросит CloneNotSupportedExceptionCloneable работает как маркерный интерфейс без какой-либо логики реализацииЭтот паттерн разделяет механизм (сам метод clone в Object) и разрешение (маркер Cloneable), позволяя Java управлять политикой клонирования во время выполнения.
Метод clone() определён в классе Object, поэтому он доступен всем Java-объектам независимо от того, реализуют ли они интерфейс Cloneable.
Новый — ещё не проверен сообществом
Вы