Why classes in Java are not cloneable by default

cloning, java

Solution

Think about cloning an object with nested properties. How deep recursively do you want to go? This could be tough for the memory, so the developers left it for us to decide.

Problem

In Java, to make a class cloneable, we need to implement `Cloneable` interface. Implementing this interface, is just to say that this class supports cloning. But what is the motive of Java language designers for not making "allowed-to-clone" as default functionality of each class? We have default implementation for shallow copy already present. Then why this restriction ?

Original source