Je demande cette curiosité comme je l'ai pas trouvé une question à cette erreur de compilation spécifique sur StackOverflow:Legacy pas autorisé sur le paramètre variable arité
Legacy array notation not allowed on variable-arity parameter
Je suis venu à travers la notation héritage en voyant un code contenant une signature comme celui-ci:
private void a(int ints[]){/*...*/}
Je joue arround un peu jusqu'à ce que je rencontrais l'erreur de compilation dans les exemples suivants.
// this method compiles as expected
private void method1(int[][] ints){ /*...*/ }
// this too
private void method2(int[]... ints){ /*...*/ }
// this does to, but makes use of legacy array notation
private void method3(int ints[][]){ /*...*/ }
// this still does, even when mixing up the notations
private void method4(int[] ints[]){ /*...*/ }
// this however fails to compile
private void method5(int... ints[]){ /*...*/ }
Y at-il une raison particulière pour laquelle le concepteur de langage a décidé de l'implémenter de cette façon? Ne pas autoriser varargs avec la notation de tableau hérité?
NOTE: I understand the legacy notation
Merci, c'était la réponse que je cherchais :) – Lino
et je suis d'accord que plusieurs notations * sont * une mauvaise idée – Lino
@Lino C'est la principale problème avec Java ces jours-ci. Trop de bagages pour maintenir la compatibilité ascendante. Quelque chose comme Kotlin semble être le futur! – Michael