Eu olhei para algum código Java hoje e encontrei uma sintaxe estranha:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
Eu pensei que não era possível compilar e queria consertar o que eu pensava ser um erro de digitação, mas lembrei que o compilador Java realmente o aceitava!
Alguém pode me ajudar a entender o que isso significa? É uma matriz de funções?
Respostas:
É um método que retorna um
int[]
.fonte
public int[] foo()[][] {
e fazer os olhos das pessoas sangrarem.Essa é uma pergunta engraçada. Em java, você pode dizer
int[] a;
, assim comoint a[];
.Nesta perspectiva, para obter o mesmo resultado, basta mover o
[]
e escrever
public int[] get() {
.Ainda parece que o código veio de um ofuscador ...
fonte
Como existe uma tag C, mostrarei que uma notação semelhante (mas não idêntica) é possível em C e C ++:
Aqui, a função
f
retorna um ponteiro para uma matriz de 10 polegadas.Java simplesmente não precisa de estrela e parênteses.
fonte
f()[]
significa algo parecido(*f())
.A sintaxe do java permite o seguinte:
e também
que parece mais familiar vindo da sintaxe do estilo c.
também, com uma função, o nome pode vir antes ou depois do [] e o tipo ainda é int []
fonte