Yo uso el consejo dado por Effective Java de Joshua Bloch, Item 52: Refer to objects by their interfaces
.Deberíamos referirnos a los objetos por sus interfaces en la plataforma Android
Sin embargo, en la mayor parte del código de ejemplo viene con Android, me doy cuenta de que el siguiente código es bastante común.
private ArrayList<Integer> mPhotos = new ArrayList<Integer>();
Entiendo que esto se debe a la optimización del rendimiento, ya que el siguiente código será más lento.
private List<Integer> mPhotos = new ArrayList<Integer>();
Sin embargo, ¿tal técnica de optimización sigue siendo válida? Como si leo de http://developer.android.com/guide/practices/design/performance.html
En dispositivos sin un JIT, es cierto que la invocación de métodos a través de una variable con un tipo exacto en lugar de una interfaz es ligeramente más eficiente. (Entonces, por ejemplo, era más barato invocar métodos en un mapa HashMap que en un mapa, aunque en ambos casos el mapa era un HashMap). No fue el caso que esto fue 2 veces más lento; la diferencia real fue más como 6% más lenta. Además, el JIT hace que los dos sean indistinguibles.
¿Debemos asumir que nuestros dispositivos no tienen JIT y remitir objetos sin interfaces? O, ¿debemos adoptar el consejo de Joshua Bloch?
La razón no es concreta. No tenía nada que ver con la variable privada. El ejemplo proporcionado por Joshua Bloch también es privado. –
por lo que Joshua Bloch está equivocado. – irreputable
Creo que es bastante arrogante decir eso. Al menos necesita proporcionar algún ejemplo y hecho del mundo real para respaldar su afirmación. Al menos en Java efectivo de Joshua Bloch, proporciona un ejemplo muy bueno del mundo real sobre por qué es mejor usar una interfaz. –