Java方法签名后奇怪的“[]”

时间:2011-01-15 11:29:48

标签: java arrays syntax

我今天看了一些Java代码,发现了一些奇怪的语法:

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

我认为无法编译并想修复我认为是错误的内容,但后来我记得Java编译器确实接受了它!

有人可以帮我理解这意味着什么吗?它是一组函数吗?

4 个答案:

答案 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 []

相关问题