No exemplo criado para ordenação de listas imutaveis, foi criado uma referencia do tipo List a partir de uma nova instancia de um objeto do tipo ArrayList, conforme o codigo abaixo:
public static void main(String[] args) {
Curso javaColecoes = new Curso("Dominando Coleções em Java", "Paulo Silveira");
javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
javaColecoes.adiciona(new Aula("Modelando com colecoes", 24));
List<Aula> aulasImutaveis = javaColecoes.getAulas();
System.out.println(aulasImutaveis);
List<Aula> aulasMutaveis = new ArrayList<>(aulasImutaveis);
Collections.sort(aulasMutaveis);
System.out.println(aulasMutaveis);
}
O codigo compila normalmente. Porém, o que me deixou em dúvida é que aulasImutaveis é uma List criada por uma nova instancia de um objeto do tipo LinkedList, conforme codigo abaixo:
public class Curso {
private String nome;
private String instrutor;
private List<Aula> aulas = new LinkedList<Aula>();
Neste caso, ocorre uma conversão implicita de LinkedList para ArrayList?