Pourquoi ne pas utiliser l'initialisation de tableau raccourci de champs dans les constructeurs Java?

StackOverflow https://stackoverflow.com/questions/8302179

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.

Était-ce utile?

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 )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top