Je voudrais créer une méthode d'initialisation d'une classe Java qui accepte 3 paramètres:Méthode Java avec paramètres de taille de tableau appliqués?
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;
}
Vous remarquerez peut-être que ce code est erroné. La variable TAILLE n'est pas définie. Mon problème est que je voudrais passer dans 3 tableaux, mais je voudrais savoir si je peux m'assurer que les trois tableaux sont tous de la même taille de tableau. De cette façon, la boucle for n'échouera pas, car le constructeur de la boucle for utilise tous les paramètres des tableaux.
Peut-être Java a une fonctionnalité différente qui peut appliquer une solution à mon problème. Je pourrais accepter un autre paramètre appelé SIZE qui sera utilisé dans la boucle for, mais cela ne résout pas mon problème si les paramètres 1 et 2 sont de taille 10 et le 3ème paramètre est un tableau de taille 9.
Je ne sais pas si je n'étais pas clair. Comment puis-je faire en sorte que les 3 arguments soient tous des tableaux contenant exactement le même nombre d'éléments?
L'utilisation d'un paramètre supplémentaire qui spécifie les tailles de matrice n'est pas très élégante et plutôt sale. Cela ne résout pas non plus le problème que les paramètres du tableau contiennent des tableaux de tailles différentes.
Merci Jon, excellente réponse! –
Ceci est un bon exemple de ce que je considère comme la mauvaise façon d'utiliser NullPointerException. Je ferais une vérification individuelle pour chacun des paramètres passés if (employeeNames == null) { throw nouveau IllegalArgumentException ("employeeNames == null"); } Cela rend la stacktrace beaucoup plus utile pour diagnostiquer le problème. –
Je pense qu'il est tout aussi acceptable de lancer un NPE dans ce cas (alors que personne ne serait pas d'accord pour lancer un IAE); mais peut-être comme un peu de compromis dans ce débat/controverse, il serait préférable d'inclure un message avec le NPE. –