Im Allgemeinen stimme ich zu, dass die Entkopplung der Schnittstelle von der Implementierung eine gute Sache ist und die Wartung Ihres Codes erleichtert.
Es gibt jedoch Ausnahmen, die Sie berücksichtigen müssen. Durch den Zugriff auf Objekte über Schnittstellen wird eine zusätzliche Indirektionsebene hinzugefügt, die Ihren Code langsamer macht.
Aus Interesse habe ich ein Experiment durchgeführt, bei dem zehn Milliarden sequenzielle Zugriffe auf eine ArrayList mit einer Länge von 1 Million generiert wurden. Auf meinem 2,4-GHz-MacBook dauerte der Zugriff auf die ArrayList über eine List-Oberfläche durchschnittlich 2,10 Sekunden, bei der Deklaration vom Typ ArrayList durchschnittlich 1,67 Sekunden.
Wenn Sie mit großen Listen arbeiten, die sich tief in einer inneren Schleife befinden oder häufig als Funktion bezeichnet werden, sollten Sie dies berücksichtigen.