我今天看了一些Java代码,发现了一些奇怪的语法:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
我认为它不能编译,并想修复我认为是拼写错误的地方,但后来我记起Java编译器确实接受了它!
有人能帮我理解一下这是什么意思吗?它是一个函数数组吗?
发布于 2011-01-15 19:33:06
这是个有趣的问题。在java中,你可以说int[] a;
,也可以说int a[];
。
从这个角度来看,为了得到相同的结果,只需要移动[]
并编写public int[] get() {
。
看起来代码还是来自于一个混淆器。
发布于 2011-01-15 19:38:45
由于有一个C标记,我将指出在C和C++中也可以使用类似的(但不相同的)表示法:
在这里,函数f
返回一个指向10个整型数组的指针。
int tab[10];
int (*f())[10]
{
return &tab;
}
Java根本不需要星号和括号。
发布于 2011-01-15 19:34:32
java的语法允许执行以下操作:
int[] intArr = new int[0];
而且还
int intArr[] = new int[0];
这看起来更像是来自c风格的语法。
因此,对于函数,名称可以在[]之前或之后,并且类型仍然是int[]
https://stackoverflow.com/questions/4699309
复制相似问题