JLS 中“形参列表后面的任何括号对”到底是什么意思,用于确定方法结果中的精确数组类型?

问题描述 投票:0回答:1

JLS 17 关于确定数组类型有以下说明:

方法的返回类型(第 8.4.5 节)可以是数组类型。精确的 数组类型取决于可能作为数组一部分出现的括号对 在方法声明的开头或方法的后面键入 形式参数列表,或两者兼而有之。数组类型表示为:

  • 结果中出现的元素类型;那么,
  • 形参列表后面的任何括号对;那么,
  • 结果中出现的任何括号对。

形式参数与方法的结果类型有什么关系?任何例子表示赞赏。

java jls
1个回答
0
投票

该部分讨论的是有效的,但非常非常不推荐风格:

public int[] aMethodThatReturnsAnArrayOfIntArrays() [] {
  return new int[10][20];
}

注意方法名称和“形式参数列表”后面有数组括号 (即

()
- 即参数列表;此特定示例有零个参数)。

这与:

相同
public int[][] aMethodThatReturnsAnArrayOfIntArrays() {
  return new int[10][20];
}

您始终可以将

)
{
之间出现的任何数组括号移至返回类型的末尾 - 这对于方法的作用或含义没有影响。

这反映了如何通过变量声明来完成这个特技:

int[][] x = new int[10][20];
for (int y[] : x) { .. }
int[] x[] = new int[10][20], y = new int[30];

...这些表格也不推荐

为什么它是合法的?因为它是用 C 编写的,而 java 大部分都是从那里复制了它的有效语法。

© www.soinside.com 2019 - 2024. All rights reserved.