Criar uma lista, duvida numa alínea

Olá boa tarde :slight_smile:

Eu não entendi uma linha deste código, linha 8 (o que está a negrito) :

import java.util.*;
public class MyCoffee implements Coffee {
public static void main(String[] args) {
List x = new ArrayList();
x.add(“3”);
x.add(“7”);
x.add(“5”);
List y = new MyCoffee().fazAlgo(x);
y.add(“1”);
System.out.println(x);
}
public List fazAlgo(List z) {
z.add(“9”);
return z;
}
}
interface Coffee {
List fazAlgo(List s);
}

O que é que faz? Não percebi :confused:

Obrigada :slight_smile:

Você precisa verificar o que o método estático fazAlgo, da classe MyCoffee faz.
provavelmente ele retorna uma implementação de List (ArrayList ou LinkedList ou qualquer outra).
Mas, basicamente, funciona da mesma maneira que

List y = new ArrayList();

Com a diferença que você pode ter, como retorno do método, uma lista que já contenha itens.

A classe MyCoffee tem um método fazAlgo, esse método retorna uma lista

public List fazAlgo(List z) {
    z.add(“9”);
    return z;
}

Seria a mesma coisa que:

List x = new ArrayList();
x.add(“3”);
x.add(“7”);
x.add(“5”);
x.add("9");
List y = x;

Ou seja, você esta apenas falando que a list y é igual a lista retornada pelo fazAlgo;

Muito obrigada :slight_smile:

Muito obrigada :slight_smile:
Mas nós só sabemos que
List y = new ArrayList();

Porque o metodo fazAlgo retorna uma lista certo??

So mais uma coisinha:

Mas nós só sabemos que
List y = new ArrayList();

Porque o metodo fazAlgo retorna uma lista certo??

Na verdade, não.
A interface List, do pacote java.util possui duas implementações padrão: ArrayList e LinkedList.
E isso deve ser do te conhecimento (se não for, agora é).
Sabemos, sim, que

List y = new MyCoffee().fazAlgo(x);

Ou seja, independente do que o método fazAlgo faça, ele devolve um objeto compatível com List.

1 curtida