Método de interfaz agrupa Arrays vs Util List

Estoy escribiendo una interfaz y su implementación. La interfaz tiene un método como

doSomething(String[] strs, Integer[] ints, String msg);

Declaré los parámetros como matrices simplemente porque llamará a una interfaz externa que tenga argumentos similares. Algunas personas sugieren que los grupos doSomething deberían ser util List en lugar de arrays. Pero no pude encontrar ninguna práctica recomendada que explique la razón por la cual es preferible la Lista de utilidades.

Loc

Respuesta 1

Las listas son más fáciles de trabajar, ya que tienen una API más rica y una variedad de implementaciones. Entonces, el resultado es que generalmente es más flexible y fácil de mantener.

El Java efectivo de Josh Bloch destaca otra razón para preferir las listas: "invariancia". Los genéricos se verifican en el momento de la compilación, por lo que las listas escritas realmente detectarán más errores que las matrices:

// Fails at runtime!
Object[] objectArray = new Long[1];
objectArray[0] = "I don't fit in"; // Throws ArrayStoreException
// Won't compile!
List<Object> ol = new ArrayList<Long>(); // Incompatible types
ol.add("I don't fit in");

Entonces, en algunos casos, en realidad es más seguro usar Listas sobre Matrices.

Hay más que eso, pero comienza a ser difícil de explicar. Consulte este enlace a la sección correspondiente de Effective Java, capítulo 5: http://java.sun.com/docs/books/effective/generics.pdf

HTH

Respuesta: 2

Básicamente, la lista es de tipo abstracto y debe ser implementada nuevamente por cualquiera de los miembros de su familia, como ArrayList, etc. Por lo tanto, no hay mucha diferencia en el uso de la matriz y la lista con respecto al rendimiento, ambos son idénticos. Solo en términos de mantenibilidad, buscamos la interfaz de Lista y podemos implementarla para cualquier familia de interfaz de Lista más adelante según el requisito. También la lista proporciona operaciones flexibles sobre el arreglo.

Respuesta: 3

Reemplacé muchas cadenas y saqué el resultado y ahora estoy tratando de escribir esas líneas en un archivo de texto. Esto es lo que hice. Creé un nuevo archivo: File newfile = new File ("/ Users / Bill / Desktop / ...

Estoy jugando con Maven y me preguntaba si puedo ejecutar mi programa usando el comando mvn desde una línea de comando o un eclipse. Puedo hacer una instalación limpia, pero no corro hasta ahora.

Estoy trabajando con una aplicación que usa JBPM 3.1 y MySQL. El problema central es que hay instancias de procesos con variables que contienen una versión anterior de un Serializable externo, no JBPM ...

Tengo un generador de código que genera clases con mucho código privado como: clase A {private void meth1 () {...} private int var1; clase privada SubA {privado voth meth2 () {...}}} ...