JLS for Java 8引入了三个新的separators:
... @ ::
省略号(...
)用作“方法或构造函数的最后形式参数”。但是JLS for Java 7已经将这个formal parameter描述为变量arity参数。它没有被提及作为分隔符。
分离器::
用于形成method reference expressions。
@
的意思是“区分注释类型声明和普通接口声明”,因此是annotation type declaration的一部分。注释已经是JLS for Java 7的一部分。我看不到“at-sign”的其他用法。
搜索有关Java 8+分隔符的问题和答案我什么也没找到,这解释了新分隔符的用法。
两个分离器...
,@
分开了什么?它们是如何使用的?
首先,正如你所注意到的那样,...
出现在Java 7中。(我认为它是在Java 5中引入的!)但是在Java 8中,它们明确地将它列为“分隔符”标记之一。
我认为没有任何实际意义。这只是一个编辑修正。
两个分隔符......,@分开了什么?
他们并没有真正分开任何东西。它们被归类为“分隔符”,因为它们不是运算符,文字,标识符或关键字。
笔记:
(
,)
,{
,}
,[
和]
也不是真正的分隔符。他们的目的是开始或结束构造。<
和>
令牌也有点奇怪。词法语法称它们为运算符,但在某些情况下它们充当(松散)分隔符。不要试图读太多。
你链接中的首句说
本章规定了Java编程语言的词法结构。
这就是重点。它是Java语言语法的(半正式)描述。我们这里不是在谈论语义,它只是“措辞”。描述Java编程语言语法中的不同元素。
你可以在public foo(Bar... vararg)
说
(
将方法名称与参数列表分开...
将参数类型与参数名称分开您可能需要深入了解Java源代码解析的方法,以了解为什么...
被列为分隔符的原因。含义:该术语源自解析器将如何处理...
,而不一定是语义。