Para clonar uma interface genérica como java.util.List
você só precisará convertê-la. aqui está um exemplo:
List list = new ArrayList();
List list2 = ((List) ( (ArrayList) list).clone());
É um pouco complicado, mas funciona, se você estiver limitado a retornar uma List
interface, para que qualquer pessoa após você possa implementar sua lista sempre que ele quiser.
Sei que esta resposta está próxima da resposta final, mas minha resposta responde como fazer tudo isso enquanto você trabalha com List
- o genérico - nãoArrayList