valores sentencia retornar retornan que metodos metodo java arrays syntax

sentencia - Weird "[]" después de la firma del método Java



return metodos en java (4)

Como hay una etiqueta C, señalaré que es posible una notación similar (pero no idéntica) en C y C ++:

Aquí la función f devuelve un puntero a una matriz de 10 ints.

int tab[10]; int (*f())[10] { return &tab; }

Java simplemente no necesita la estrella y el paréntesis.

Miré un código de Java hoy, y encontré una sintaxis extraña:

public class Sample { public int get()[] { return new int[]{1, 2, 3}; } }

Pensé que no podía compilar y quería arreglar lo que pensé que era un error tipográfico, pero luego recordé que el compilador de Java realmente lo aceptó.

¿Puede alguien ayudarme a entender lo que significa? ¿Es una variedad de funciones?


Es un método que devuelve un int[] .

Especificación del lenguaje Java (8.4 Declaraciones del método)

Para compatibilidad con versiones anteriores de la plataforma Java, se permite que una forma de declaración para un método que devuelve una matriz coloque (algunos o todos) los pares de paréntesis vacíos que forman la declaración del tipo de matriz después de la lista de parámetros.

Esto es apoyado por la producción obsolescente:

MétodoDeclarator :
MétodoDeclarador []

pero no debe usarse en un nuevo código.


Esa es una pregunta divertida. En Java puedes decir int[] a; , así como int a[]; .
Desde esta perspectiva, para obtener el mismo resultado solo necesita mover el []
y escribe public int[] get() { .
Todavía parece que el código vino de un ofuscador ...


la sintaxis de java permite lo siguiente:

int[] intArr = new int[0];

y también

int intArr[] = new int[0];

que se ve más fmiliar proveniente de la sintaxis de estilo c.

también, con una función, el nombre puede aparecer antes o después de [], y el tipo sigue siendo int []