Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sendo referencia de um tipo e recebendo construtor de outro.

Galera eu tenho uma variavel chamado alunos ao qual é do tipo List<>, porem recebo um construtor do tipo ArraList<>(), como isso é possível e porque fazer dessa forma?

Geralmente eu vejo isso sendo aplicado em alguns projetos e não consigo entender o porquê, e o motivo por não dar conflito. Pois são tipos diferente certo?

[codigo completo]

public class AlunoDao {

  private final static List<Aluno> alunos = new ArrayList<>();  // minha dúvida

    public void salva(Aluno aluno) {
        alunos.add(aluno);
    }

    public List<Aluno> todos(){
        return new  ArrayList<>(alunos);
    }

}

Na aula a gente cria uma variável chamada primeiraConta ao qual é uma referência da classe Conta e recebe o construtor.

Conta primeiraConta = new Conta();

Em seguida a gente cria outra variável que faz referência a classe Conta, porem recebe a variável primeiraConta.

Conta segundaConta = primeiraConta;

Isso funciona porque os tipos são os mesmos, e acaba que a segundaConta recebe todos os valores setados no atributo da primeiraConta.

2 respostas

Boa tarde.

List é uma interface e ArrayList é uma classe que implementa List, ou seja, a interface precisa de um método para que seja implementada, e um dos métodos que faz essa implementação é o ArrayList.

Espero ter ajudado

solução!

Também referenciando como List, se um dia quiser alterar para LinkedList ao inves de ArrayList também se torna mais fácil alterando apenas o construtor.

Tem uma explicação melhor no link https://cursos.alura.com.br/forum/topico-diferenca-entre-list-e-arraylist-104645.