Я хотел бы создать метод инициализации для класса Java, который принимает 3 параметра:Метод Java с параметрами размера принудительного массива?
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;
}
Вы можете заметить, что этот код является неправильным. Переменная SIZE не определена. Моя проблема в том, что я хотел бы передать в 3 массива, но я хотел бы знать, могу ли я гарантировать, что три массива ВСЕ имеют одинаковый размер массива. Таким образом цикл for не будет терпеть неудачу, поскольку конструктор в цикле for использует все параметры массивов.
Возможно, у Java есть другая функция, которая может обеспечить решение моей проблемы. Я мог бы принять еще один параметр SIZE, который будет использоваться в цикле for, но это не решает мою проблему, если параметры 1 и 2 имеют размер 10, а третий параметр - массив размера 9.
Так просто перефразировать я не был ясен. Как я могу гарантировать, что все три аргумента - все массивы, содержащие одинаковое количество элементов?
Использование дополнительного параметра, который задает размеры массива, не очень изящный и грязный. Он также не решает проблему, параметры массива содержат массивы различного размера.
Благодаря Джон, отличный ответ! –
Это хороший пример того, что я считаю неправильным способом использования NullPointerException. Я сделал бы индивидуальную проверку для каждого из переданных параметров if (employeeNames == null) { throw new IllegalArgumentException ("employeeNames == null"); } Это делает stacktrace гораздо более полезной для диагностики проблемы. –
Я думаю, что в этом случае было бы приемлемым бросить NPE (хотя никто не согласился бы с броском IAE); но, возможно, в качестве компромисса в этой дискуссии/споре, было бы лучше включить сообщение с NPE. –