Me gustaría crear un método de inicialización para una clase Java que acepta 3 parámetros:Método de Java con parámetros de tamaño de matriz forzada?
Employee[] method(String[] employeeNames, Integer[] employeeAges, float[] employeeSalaries)
{
Employee myEmployees[] = new Employee[SIZE];// dont know what size is
for (int count = 0; count < SIZE; count++)
{
myEmployees[count] = new Employee(employeeNames[count], employeeAges[count], employeeSalaries[count]);
}
return myEmployees;
}
Usted puede notar que este código es incorrecto. La variable TAMAÑO no está definida. Mi problema es que me gustaría pasar en 3 matrices, pero me gustaría saber si puedo asegurarme de que las tres matrices tengan TODO el mismo tamaño de matriz. De esta forma, el bucle for no fallará, ya que el constructor en el bucle for usa todos los parámetros de las matrices.
Quizás Java tenga una característica diferente que pueda imponer una solución a mi problema. Podría aceptar otro parámetro llamado SIZE que se usará en el ciclo for, pero eso no resuelve mi problema si los parámetros 1 y 2 son del tamaño 10 y el 3er parámetro es una matriz de tamaño 9.
Así que solo para rehash en caso de que no fuera claro. ¿Cómo puedo hacer cumplir que los 3 argumentos son todos los arrays que contienen exactamente la misma cantidad de elementos?
El uso de un parámetro adicional que especifica los tamaños de matriz no es muy elegante y está algo sucio. Tampoco resuelve el problema de que los parámetros de matriz contienen matrices de diferentes tamaños.
Gracias Jon, excelente respuesta! –
Este es un buen ejemplo de lo que considero la forma incorrecta de usar NullPointerException. Haría una comprobación individual para cada uno de los parámetros pasados if (employeeNames == null) { throw new IllegalArgumentException ("employeeNames == null"); } Esto hace que stacktrace sea mucho más útil para diagnosticar el problema. –
Creo que es igual de aceptable lanzar un NPE en este caso (mientras que nadie estaría en desacuerdo con tirar un IAE); pero tal vez como un poco de compromiso en este debate/controversia, sería mejor incluir un mensaje con la NPE. –