Pourquoi ne pas utiliser l'initialisation de tableau raccourci de champs dans les constructeurs Java?
-
25-10-2019 - |
Question
Prenons l'exemple suivant:
private int[] list;
public Listing() {
// Why can't I do this?
list = {4, 5, 6, 7, 8};
// I have to do this:
int[] contents = {4, 5, 6, 7, 8};
list = contents;
}
Pourquoi ne puis-je utiliser un raccourci initialisation? La seule façon que je peux penser à se déplacer c'est de faire un autre tableau et la mise list
à ce tableau.
La solution
Lorsque vous définissez le tableau sur la ligne de définition, il suppose qu'il sait ce que le type sera donc le new int[]
est redondant. Toutefois, lorsque vous utilisez l'affectation, il ne suppose pas connaître le type de tableau que vous avez le préciser.
Certes, d'autres langues ne pose pas de problème avec cela, mais en Java, la différence est que vous définissez et initialisant les champs / variables sur la même ligne.
Autres conseils
Essayez list = new int[]{4, 5, 6, 7, 8};
.
En plus d'utiliser new Object[]{blah, blah....}
Voici une approche pour faire un peu plus court ce que vous voulez. Utiliser la méthode ci-dessous.
public static Object [] args(Object... vararg) {
Object[] array = new Object[vararg.length];
for (int i = 0; i < vararg.length; i++) {
array[i] = vararg[i];
}
return array;
}
PS - Java est bon, mais il suce dans des situations comme celles-ci. Essayez Ruby ou Python pour votre projet, si possible, et justifiable. (Regardez java 8 n'a pas encore de raccourci pour alimenter une hashmap, et il leur a fallu si longtemps pour faire petit changement pour améliorer la productivité des développeurs )