Quando usamos a interface List na declaração estamos dizendo que estamos criando uma variável que irá referenciar qualquer objeto que implemente a interface List. Essa flexibilidade é bem interessante quando criamos métodos. Por exemplo, seja a declaração abaixo:
Public void imprimeLista(ArrayList array){
…
}
O método só aceitará um argumento do tipo ArrayList. Entretanto, como sabemos que qualquer lista que implemente o método List se comporta da mesma forma, poderíamos criar um método muito mais flexível utilizando a interface:
Public void imprimeLista(List array){
…
}
Agora esse método aceitará qualquer tipo de objeto que implemente a interface List, isto significa que podemos passar um objeto do tipo ArrayList ou LinkedList, ou qualquer outro objeto que implemente essa interface.