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);
}
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.
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.