오늘 Java 코드를 살펴 보니 이상한 구문이 있습니다.
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
나는 그것이 컴파일 할 수 없다고 생각했고 내가 생각했던 오타를 고치고 싶었지만 Java 컴파일러가 실제로 그것을 받아들이는 것을 기억했습니다!
누군가가 의미를 이해하도록 도와 주시겠습니까? 함수의 배열입니까?
답변
을 반환하는 메서드입니다 int[]
.
Java 언어 사양 (8.4 메서드 선언)
이전 버전의 Java 플랫폼과의 호환성을 위해 배열을 반환하는 메서드에 대한 선언 양식은 매개 변수 목록 뒤에 배열 유형의 선언을 형성하는 빈 대괄호 쌍 (전체 또는 일부)을 배치 할 수 있습니다.
이것은 노후화 된 프로덕션에서 지원됩니다.
MethodDeclarator :
MethodDeclarator []그러나 새 코드에서 사용해서는 안됩니다.
답변
재미있는 질문입니다. 자바에서는 int[] a;
뿐만 아니라 int a[];
.
이 관점에서 동일한 결과를 얻으려면을 이동 []
하고 작성하면 public int[] get() {
됩니다.
여전히 코드가 난 독기에서 나온 것 같습니다 …
답변
C 태그가 있으므로 C와 C ++에서 유사한 (하지만 동일하지는 않음) 표기법이 가능하다는 점을 지적하겠습니다.
여기서 함수 f
는 10 개의 정수 배열에 대한 포인터를 반환합니다.
int tab[10];
int (*f())[10]
{
return &tab;
}
Java에는 별표와 괄호가 필요하지 않습니다.
답변
java의 구문은 다음을 허용합니다.
int[] intArr = new int[0];
그리고 또한
int intArr[] = new int[0];
c 스타일 구문에서 오는 것이 더 익숙해 보입니다.
마찬가지로 함수를 사용하면 이름이 [] 앞 또는 뒤에 올 수 있으며 유형은 여전히 int []입니다.