为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2022-06-15 09:50:48
Java 8 的 JLS 引入了三个新的分隔符:...   @   ::省略号 ( ...) 用作“方法或构造函数的最后一个形式参数”。但是 Java 7 的 JLS 已经将此形式参数描述为variable arity parameter。它没有作为分隔符被提及。分隔符::用于形成方法引用表达式。这@意味着“将注释类型声明与普通接口声明区分开来”,因此是注释类型声明的一部分。注释已经是 Java 7 的 JLS 的一部分。我看不到“ at-sign ”的其他用法。搜索有关 Java 8+ 分隔符的问题和答案我一无所获,这解释了新分隔符的用法。两个分隔符...分别是@什么?它们是如何使用的?
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

首先,正如您注意到的那样,...它出现在 Java 7 中。(我认为它是在 Java 5 中引入的!)但是在 Java 8 中,他们明确地将其列为“分隔符”标记之一。

我认为这没有任何实际意义。这只是编辑上的更正。

两个分隔符...,@分开是什么?

他们并没有真正分开任何东西。它们被归类为“分隔符”,因为它们不是运算符、文字、标识符或关键字。

笔记:

  1. 在 JLS 11 第 3.1 节中,规范定义了一个替代术语“标点符号”。丑陋,但更准确。)

  2. JLS 将“分隔符”与不区分的“分隔符”区分开来是没有用的。规范的其余部分几乎不使用术语“分隔符”,当然也不会在任何暗示分离的上下文中使用。

  3. “分隔符”不分离是有先例的。现有的标记(){,}[也不]是真正的分隔符。它们的目的是开始或结束构造。

  4. 和标记<>有点奇怪。词汇语法称它们为运算符,但在某些情况下,它们充当(松散的)分隔符。

不要试图对此进行过多的解读。


查看完整回答
反对 回复 2022-06-15
?
catspeake

TA贡献1111条经验 获得超0个赞

您链接中的第一句话说

本章规定了 Java 编程语言的词法结构。

这就是重点。它是 Java 语言语法的(半正式)描述。我们在这里不是在谈论语义,它只是“措辞”。描述Java 编程语言语法中的不同元素。

你可以说在public foo(Bar... vararg)

  • (将方法名称与参数列表分开

  • ...将参数类型与参数名称分开

您可能必须深入了解Java 源代码的解析方式,才能了解...列为分隔符的原因。含义:该术语源自解析器将如何处理...,不一定是语义含义。


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信