¡Hola Victor, espero que estés bien!
Entiendo tu confusión al ver la línea de código que mencionas:
List<Titulo> lista = new ArrayList<>();
En este caso, lo que está sucediendo es que se está creando una instancia de la clase ArrayList
que implementa la interfaz List
. La ventaja de hacerlo de esta manera es que, al referenciar la lista como un tipo List
, en lugar de ArrayList
, estás programando orientado a la interfaz, lo que te da flexibilidad para cambiar la implementación subyacente en el futuro sin tener que cambiar mucho código.
Por ejemplo, si en el futuro decides cambiar de ArrayList
a LinkedList
, simplemente tendrías que cambiar la parte derecha de la asignación:
List<Titulo> lista = new LinkedList<>();
Y el resto del código que utiliza la lista seguiría funcionando sin cambios, ya que ambas implementan la interfaz List
.
Espero que esto aclare tu duda. Si tienes alguna otra pregunta, no dudes en preguntar.
Espero haber ayudado y buenos estudios!