我今天看了一些Java代码,发现了一些奇怪的语法:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
我认为无法编译并想修复我认为是错误的内容,但后来我记得Java编译器确实接受了它!
有人可以帮我理解这意味着什么吗?它是一组函数吗?
答案 0 :(得分:107)
这是一个返回int[]
。
Java Language Specification(8.4方法声明)
为了与旧版Java平台兼容,请提供声明表单 对于返回数组的方法,允许放置(部分或全部)空 括号对,在参数列表后形成数组类型的声明。
这是过时的生产支持:
MethodDeclarator :
MethodDeclarator []但不应在新代码中使用。
答案 1 :(得分:20)
这是一个有趣的问题。
在java中,您可以说int[] a;
,以及int a[];
从这个角度来看,为了得到相同的结果,只需要移动[]
并写public int[] get() {
。
看起来代码来自混淆器......
答案 2 :(得分:10)
由于存在C标记,我将指出C和C ++中可能存在类似(但不完全相同)的表示法:
这里函数f
返回一个指向10个整数数组的指针。
int tab[10];
int (*f())[10]
{
return &tab;
}
Java根本不需要星号和括号。
答案 3 :(得分:4)
java的语法允许以下内容:
int[] intArr = new int[0];
以及
int intArr[] = new int[0];
来自c风格语法的看起来更加陌生。
同样,使用函数,名称可以在[]之前或之后,并且类型仍然是int []