La lista es una interfaz, por lo que puede almacenar referencias a todas las clases desde la Interfaz de lista. Si utilizó la siguiente declaración, luego de algunos pasos de programación también puede almacenar otros objetos (que se extienden desde la lista).
List<String> myList = new ArrayList<String>();
...
myList =new LinkedList<String>();
La principal ventaja viene con esto es el mantenimiento del código. Por ejemplo, si alguien viene y quiere usar una Lista Enlazada en lugar de una Lista de Arreglos, solo necesita cambiar una línea en lugar de tropecientos en todo el código. Hace que tu código sea un poco más flexible.
Todo el concepto de polimorfismo en Java se basa en la capacidad de java de utilizar la referencia de clase de interfaz/base para hacer referencia a objetos de clase secundaria.
Además, la programación de una interfaz en lugar de la implementación real siempre se considera una buena práctica. Esto permitiría al desarrollador reemplazar una implementación con otra/mejor implementación fácilmente cuando sea necesario.
Tendrá que cambiar su idioma: Esto no involucra el casting en lo más mínimo. En ninguna parte ves un lanzamiento, '(List)' se está utilizando. –
Creo que está cubierto: http://stackoverflow.com/questions/4062982/list-versus-arraylist, http://stackoverflow.com/questions/9852831/why-use-list-list-new-arraylist-instead- of-arraylist-list-new-arraylist, http://stackoverflow.com/questions/147468/why-should-the-interface-for-a-java-class-be-prefered :-) –