猿问

新的 Java 8+ 分隔符(标点符号) - 它们如何/在哪里使用?

Java 8 的 JLS 引入了三个新的分隔符

...   @   ::

省略号 ( ...) 用作“方法或构造函数的最后一个形式参数”。但是 Java 7 的 JLS 已经将此形式参数描述为variable arity parameter。它没有作为分隔符被提及。

分隔符::用于形成方法引用表达式

@意味着“将注释类型声明与普通接口声明区分开来”,因此是注释类型声明的一部分。注释已经是 Java 7 的 JLS 的一部分。我看不到“ at-sign ”的其他用法。

搜索有关 Java 8+ 分隔符的问题和答案我一无所获,这解释了新分隔符的用法。

两个分隔符...分别是@什么?它们是如何使用的?


慕斯709654
浏览 149回答 2
2回答

MYYA

首先,正如您注意到的那样,...它出现在 Java 7 中。(我认为它是在 Java 5 中引入的!)但是在 Java 8 中,他们明确地将其列为“分隔符”标记之一。我认为这没有任何实际意义。这只是编辑上的更正。两个分隔符...,@分开是什么?他们并没有真正分开任何东西。它们被归类为“分隔符”,因为它们不是运算符、文字、标识符或关键字。笔记:在 JLS 11 第 3.1 节中,规范定义了一个替代术语“标点符号”。丑陋,但更准确。)JLS 将“分隔符”与不区分的“分隔符”区分开来是没有用的。规范的其余部分几乎不使用术语“分隔符”,当然也不会在任何暗示分离的上下文中使用。“分隔符”不分离是有先例的。现有的标记(,&nbsp;),&nbsp;{,}和[也不]是真正的分隔符。它们的目的是开始或结束构造。和标记<也>有点奇怪。词汇语法称它们为运算符,但在某些情况下,它们充当(松散的)分隔符。不要试图对此进行过多的解读。

catspeake

您链接中的第一句话说本章规定了 Java 编程语言的词法结构。这就是重点。它是 Java 语言语法的(半正式)描述。我们在这里不是在谈论语义,它只是“措辞”。描述Java 编程语言语法中的不同元素。你可以说在public foo(Bar... vararg)(将方法名称与参数列表分开...将参数类型与参数名称分开您可能必须深入了解Java 源代码的解析方式,才能了解...列为分隔符的原因。含义:该术语源自解析器将如何处理...,不一定是语义含义。
随时随地看视频慕课网APP

相关分类

Java
我要回答