新的 Java 8 个以上的分隔符(标点符号)- how/where 它们被使用了吗?
new Java 8+ separators (punctuators) - how/where are they used?
Java 8 的 JLS 引入了三个新的 separators:
... @ ::
省略号 (...
) 用作“方法或构造函数的最后一个形式参数”。但是 Java 7 的 JLS 已经将此 formal parameter 描述为 变量参数 。没有提到它作为分隔符。
分隔符::
用于组成method reference expressions.
@
的意思是“将注释类型声明与普通接口声明区分开来”,因此是 annotation type declaration 的一部分。注释已经是 Java 7 的 JLS 的一部分。我看不到“at-sign”的其他用法。
搜索有关 Java 8+ 分隔符的问题和答案,我一无所获,这解释了新分隔符的用法。
两个分隔符...
、@
分别是什么?它们是如何使用的?
首先,正如您所说,...
出现在 Java 7 中。(我认为它是在 Java 5 中引入的!)但是 Java 8他们明确地将其列为 "separator" 标记之一。
我认为这没有任何实际意义。这只是编辑更正。
What do the both separators ..., @ separate?
他们并没有真正分开任何东西。它们被归类为 "separators",因为它们不是运算符、文字、标识符或关键字。
备注:
在 JLS 11 第 3.1 节中,规范定义了一个替代术语 "punctuator"。丑陋,但更准确。)
JLS 区分 "separators" 和不区分是没有用的。术语 "separator" 在规范的其余部分几乎没有使用,当然也没有在任何暗示分离的上下文中使用。
"separators"不分开是有先例的。现有标记 (
、)
、{
、}
、[
和 ]
也并不真正用作分隔符。它们的目的是开始或结束构造。
<
和 >
标记也有点奇怪。词法语法称它们为运算符,但在某些上下文中它们充当(松散的)分隔符。
不要试图对此解读太多。
你 link 中最上面的一句话说
This chapter specifies the lexical structure of the Java programming language.
这就是重点。它是 Java 语言 语法 的(半正式)描述。我们在这里 不是 谈论语义,它只是 "wording"。描述 Java 编程语言的 语法 中的不同元素。
你可以在 public foo(Bar... vararg)
中说
(
将方法名与参数列表分开
...
将参数类型和参数名分开
您可能需要深入研究 Java 源代码解析的 方式 才能了解 ...
被列为分隔符的原因。含义:该术语源自解析器将如何处理 ...
,不一定是语义含义。
Java 8 的 JLS 引入了三个新的 separators:
... @ ::
省略号 (...
) 用作“方法或构造函数的最后一个形式参数”。但是 Java 7 的 JLS 已经将此 formal parameter 描述为 变量参数 。没有提到它作为分隔符。
分隔符::
用于组成method reference expressions.
@
的意思是“将注释类型声明与普通接口声明区分开来”,因此是 annotation type declaration 的一部分。注释已经是 Java 7 的 JLS 的一部分。我看不到“at-sign”的其他用法。
搜索有关 Java 8+ 分隔符的问题和答案,我一无所获,这解释了新分隔符的用法。
两个分隔符...
、@
分别是什么?它们是如何使用的?
首先,正如您所说,...
出现在 Java 7 中。(我认为它是在 Java 5 中引入的!)但是 Java 8他们明确地将其列为 "separator" 标记之一。
我认为这没有任何实际意义。这只是编辑更正。
What do the both separators ..., @ separate?
他们并没有真正分开任何东西。它们被归类为 "separators",因为它们不是运算符、文字、标识符或关键字。
备注:
在 JLS 11 第 3.1 节中,规范定义了一个替代术语 "punctuator"。丑陋,但更准确。)
JLS 区分 "separators" 和不区分是没有用的。术语 "separator" 在规范的其余部分几乎没有使用,当然也没有在任何暗示分离的上下文中使用。
"separators"不分开是有先例的。现有标记
(
、)
、{
、}
、[
和]
也并不真正用作分隔符。它们的目的是开始或结束构造。<
和>
标记也有点奇怪。词法语法称它们为运算符,但在某些上下文中它们充当(松散的)分隔符。
不要试图对此解读太多。
你 link 中最上面的一句话说
This chapter specifies the lexical structure of the Java programming language.
这就是重点。它是 Java 语言 语法 的(半正式)描述。我们在这里 不是 谈论语义,它只是 "wording"。描述 Java 编程语言的 语法 中的不同元素。
你可以在 public foo(Bar... vararg)
(
将方法名与参数列表分开...
将参数类型和参数名分开
您可能需要深入研究 Java 源代码解析的 方式 才能了解 ...
被列为分隔符的原因。含义:该术语源自解析器将如何处理 ...
,不一定是语义含义。