代码之家  ›  专栏  ›  技术社区  ›  LuCio

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

  •  4
  • LuCio  · 技术社区  · 5 年前

    Java 8的JLS引入了三个新的 separators :

    ...   @   ::
    

    省略法(省略) ... )用作“ 方法或构造函数的最后一个形参 “。但是Java 7的JLS已经描述了这一点。 formal parameter 作为 变量arity参数 . 没有提到它是一个分隔符。

    分离器 :: 用于形成 method reference expressions .

    这个 @ 意思是“ 区分注释类型声明和普通接口声明的步骤 “因此 annotation type declaration . 注释已经是Java 7的JLS的一部分。“我看不到其他用法” 在标志处 “。

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

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

    2 回复  |  直到 5 年前
        1
  •  3
  •   Stephen C    5 年前

    首先,如你所说 ... 存在于Java 7中。(我认为它是在Java 5中引入的!)但在Java 8中,它们明确地将其列为“分隔符”之一。

    我不认为这有什么真正的意义。这只是一个编辑性的修正。

    两个分隔符是什么…,@分隔的?

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

    笔记:

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

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

    3. “分离器”不分离有先例。现有令牌 ( , ) , { , } , [ ] 也不要真的充当分隔符。它们的目的是开始或结束构造。

    4. 这个 < > 代币也有点奇怪。词汇语法称它们为运算符,但在某些上下文中它们充当(松散)分隔符。

    不要对这篇文章读得太多。

        2
  •  0
  •   GhostCat    5 年前

    你链接中的第一句话是

    本章指定Java编程语言的词汇结构。

    这就是关键所在。它是一种(半正式的)Java语言描述。 句法 . 我们是 在这里说语义,只是“措辞”。描述中的不同元素 句法 Java编程语言。

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

    • ( 将方法名与参数列表分隔开
    • ... 将参数类型与参数名称分开

    你可能要潜入 怎样 对Java源代码进行解析得到的原因 列为分隔符。含义:这个术语是从解析器将如何处理 不一定是语义意义。