Variaveis Tipo Interface

Eu estava lendo um livro sobre Java e na parte de coleções dizia como declarar um ArrayList da seguinte forma:

List minhalist=new ArrayList;

Porém não entendi uma coisa: apesar do objeto ArrayList ser derivado da interface List, porque o tipo é List e não ArrayList. Està correto o tipo ser de interface? Por que?

Oi Danilo,

Seja bem-vindo ao GUJ!

Isso já foi discutido nesse tópico:
http://www.guj.com.br/posts/list/55387.java#290673

Por dar uma lida por lá? Se ainda tiver dúvidas, poste aí que a gente esclarece! :wink:

Já adiantando um pouco. Definir se a lista é um LinkedList ou um ArrayList é um aspecto que envolve mais a implementação do que adicionar novos métodos a lista em si. Então, é preferível trabalhar com a classe superior para que no futuro você possa alterar a implementação sem alterar seu código.

Há exemplos no link que te passei.