我今天看了一些 Java 代码,发现了一些奇怪的语法:
public class Sample { public int get()[] { return new int[]{1, 2, 3}; } }
我认为这不能编译,并想修复我认为是一个输入错误,但后来我记得 Java 编译器实际上接受了它!
有人能帮我理解一下它的意思吗? 它是一个函数数组吗?
真是个有趣的问题。 在 java 中,你可以说 int[] a;,也可以说 int a[];。 从这个角度来看,为了得到相同的结果,只需要移动 [] < br > 并写入 public int[] get() {。< br > 仍然看起来像代码来自一个模糊..。
int[] a;
int a[];
[]
public int[] get() {
Java 的语法允许以下内容:
int[] intArr = new int[0];
还有
int intArr[] = new int[0];
从 c 样式的语法来看,它看起来更加相似。
因此,对于一个函数,名称可以出现在[]之前或之后,而类型仍然是 int []
它是一个返回 int[]的方法。
int[]
Java 语言规格 (8.4方法声明) 为了与 Java 平台的旧版本兼容,声明表单 for a method that returns an array is allowed to place (some or all of) the empty bracket pairs that form the declaration of the array type after the parameter list. 这得到了过时产品的支持: 方法声明人 : 方法声明程序 [ ] 但不应在新代码中使用。
为了与 Java 平台的旧版本兼容,声明表单 for a method that returns an array is allowed to place (some or all of) the empty bracket pairs that form the declaration of the array type after the parameter list.
这得到了过时产品的支持:
方法声明人 : 方法声明程序 [ ]
但不应在新代码中使用。
由于有一个 C 标记,我将指出在 C 和 C + + 中可以使用类似(但不完全相同)的表示法:
这里函数 f返回一个指向10整数数组的指针。
f
int tab[10]; int (*f())[10] { return &tab; }
Java 不需要星号和括号。