J'ai regardé du code Java aujourd'hui et j'ai trouvé une syntaxe étrange:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
Je pensais que cela ne pouvait pas être compilé et je voulais corriger ce que je pensais être une faute de frappe, mais je me suis souvenu que le compilateur Java l'avait effectivement accepté!
Quelqu'un peut-il m'aider s'il vous plaît à comprendre ce que cela signifie? S'agit-il d'un ensemble de fonctions?
Réponses:
C'est une méthode qui renvoie un
int[]
.la source
public int[] foo()[][] {
et faire saigner les yeux des gens.C'est une drôle de question. En java, vous pouvez dire
int[] a;
, ainsi queint a[];
.De ce point de vue, pour obtenir le même résultat, il suffit de déplacer
[]
et d'écrire
public int[] get() {
.On dirait toujours que le code provient d'un obfuscateur ...
la source
Comme il existe une balise C, je précise qu'une notation similaire (mais pas identique) est possible en C et C ++:
Ici, la fonction
f
renvoie un pointeur vers un tableau de 10 pouces.Java n'a tout simplement pas besoin de l'étoile et des parenthèses.
la source
f()[]
quelque chose comme(*f())
.La syntaxe de java permet ce qui suit:
et aussi
qui semble plus familier provenant de la syntaxe de style c.
de même, avec une fonction, le nom peut venir avant ou après le [], et le type est toujours int []
la source