lectura código de otras personas, he visto un montón de:¿Por qué primero declaramos subtipos como su supertipo antes de crear una instancia de ellos?
List<E> ints = new ArrayList<E>();
Map<K, V> map = new HashMap<K, V>();
Mi pregunta es: ¿cuál es el punto/ventaja de ellos crear instancias de esa manera en lugar de:
ArrayList<E> ints = new ArrayList<E>();
HashMap<K, V> map = new HashMap<K, V>();
Lo que también hace extraño es que nunca he visto algo como:
CharSequence s = new String("String");
o
OutputStream out = new PrintStream(OutputStream);
Duplicados (de la primera parte de la pregunta):
When/why to use/define an interface
Use interface or type for variable definition in java?
When should I use an interface in java?
why are interfaces created instead of their implementations for every class
What's the difference between these two java variable declarations?
Aceptando esto como la respuesta porque, si bien es también el más completo al proporcionar un ejemplo del mundo real, la segunda parte de mi pregunta se responde mejor aquí. – chrisdotcode