Question: I am trying to clone a list of Cloneables:

```
public static <T extends Cloneable> List<T> cloneList(List<T> list)
{
    List<T> out = new ArrayList<T>();
    for(int i=0;i<list.size();i++)
    {
        out.add((T)((T)list.get(i)).clone());
    }
    return out;
}

```

which throws the error:

```
Helpers.java:40: error: cannot find symbol
            out.add((T)((T)list.get(i)).clone());
                                       ^
  symbol:   method clone()
  location: interface Cloneable

```

Why is that; isn't `clone()` the single method the `Cloneable` interface is all about?

Answer: 
`Cloneable` is a [marker](http://javarevisited.blogspot.com/2012/01/what-is-marker-interfaces-in-java-and.html) interface, clone() method is in Object class, So you should override clone() method in your class as per your requirement, and you also have to implement Cloneable interface to tell JVM that the object is cloneable. Cloneable interface works like Serializable interface which is for serialization.
You need to implement `Cloneable` and override `clone()` to use it (make it `public`, it's `protected` in the `Object` class).