Useful site, but it misses one thing out. It implies the return type of clone() is Object. Since Java5, it has been possible to use covariant return types, so you can have a clone() method in class Foo which returns a Foo reference.
The serialisation solution is a well‑known cheat, which does work, but only if the class implements Serializable. It also has slower performance.
Better solutions: If you want to copy your object, you can give the class a copy() method (rather like
this, or a copy constructor, or a factory method which copies an object.
Better still, make your class immutable. Then you can forget all about cloning, copying, etc, because that will cease to be a problem.