设为首页 加入收藏

TOP

JDK 10 的 109 项新特性(三)
2018-03-23 08:53:26 】 浏览:782
Tags:JDK 109 项新 特性
e 方法类似,这与多版本 jar 文件有关。
  • java.util.spi.LocaleNameProvider:
    getDisplayUnicodeExtensionKey(String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。
    getDisplayUnicodeExtensionType(String, String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。
  • java.util.stream.Collectors:
    toUnmodifiableList():
    toUnmodifiableSet():
    toUnmodifiableMap(Function, Function):
    toUnmodifiableMap(Function, Function, BinaryOperator): 这四个新方法都返回 Collectors ,将输入元素聚集到适当的不可修改的集合中。
    • java.lang.model.SourceVersion: 现在有了一个字段,它代表了 JDK 10 的版本。
    • java.lang.model.util.TypeKindVisitor6:
      javax.lang.model.util.TypeKindVisitor9:
      (我必须承认,我从来没听说过这些类)
      R visitNoTypeAsModule(NoType, P): 访问一个 MODULE 的 pseudo-type 。我不确定为什么只有这两个类得到这个方法,因为还有 Visitor7 和 Visitor8 变量。
    • javax.remote.management.rmi.RMIConnectorServer:
      这个类已经添加了两个字段: CREDENTIALS_FILTER_PATTERN 和 SERIAL_FILTER_PATTERN 。
    • javax.ButtonModel:看,Swing 还在更新!
      ButtonGroup getGroup(): 返回按钮所属的组。通常用于单选按钮,它们在组中是互斥的。
    • javax.plaf.basic.BasicMenuUI:
      Dimension getMinimumSize(JComponent): 返回指定组件适合观感的最小大小。

    JVM 规范改动

    这些改动相当小:

    • 4.6节:类文件格式(第99页)。在方法访问标志方面有小的改动。
    • 4.7节:模块属性(第169页)。如果模块不是 java.base ,则 JDK 10 不再允许设置 ACC_TRANSITIVE 或 ACC_STATIC_PHASE 。
    • 4.10节:类文件的校验(第252页)。dup2 指令已改变了 typesafe form 1 的定义,颠倒了 canSafleyPushList 一节中类型的顺序(你需要仔细查看才能发现它)。
    • 5.2节:Java 虚拟机启动(第350页)。该描述添加了在创建初始类或接口时可使用用户定义的类加载器( bootstrap 类加载器除外)。

    对 Java 语言规范的更改

    这里还有一些更改,但主要是为了支持局部变量类型推断。

    • 第3.8节:标识符(第23页)。在忽略了可忽略的字符之后,标识符的等价性现在被考虑了。这似乎是合乎逻辑的。
      (第24页)一个新的 Token,TypeIdentifier,它支持对局部变量类型推断的新用法,而 var 的使用不是关键字,而是一个具有特殊含义的标识符,作为局部变量声明的类型。
    • 第4.10.5节:类型预测(第76页)。这是一个相当复杂的部分,它涉及到捕获变量、嵌套类以及如何使用局部变量类型推断。我建议你阅读规范中的这一部分,而不是试图解释它。
    • 第6.1节:声明(第134页)。一个反映使用 TypeIdentifier 来支持局部变量类型的推断的小改动。
    • 第6.5节:确定名字的含义(第153页,第158页和第159页)。根据类型标识符的使用而更改类类型。
    • 第6.5.4.1:简单的 PackageOrTypeNames(第160页)
    • 第6.5.4.2节:合规的 PackageOrTypeNames(第160页)。这两种方式都与使用 TypeIdentifier 有细微的变化。
    • 第7.5.3:单静态导入声明(第191页)。这改变了导入具有相同名称的静态类型的规则。除非类型是相同的,否则这将成为一个错误,在这种情况下,重复被忽略。
    • 第7.7.1:依赖(第198页)。如果你明确声明一个模块需要 java.base ,那在必要的关键字之后,你就不能再使用修饰符(例如静态)了。
    • 第8部分:正式参数(第244页)。接收者参数可能只出现在一个实例方法的 formalparameters 列表,或者是一个内部类的构造函数中,其中内部类没有在静态上下文中声明。
    • 第9.7.4节:注释可能出现的地方(第335页)。有一个与局部变量类型推断相关的变更。
    • 第14.4部分:局部变量声明语句(第433页)。实现局部变量类型推断所需的大量更改。
    • 第14节:增强的 for 语句(第455页)。这个结构已经更新,包括对局部变量类型推断的支持。
    • 第14.20.3节:try-with-resources(474页)。这个结构已经更新,包括对局部变量类型推断的支持。

    最后,第 19 章有多处语法更新,反映了应更多使用 TypeIdentifier 类型标识符,而不仅仅是 Identifier 标识符,以支持局部变量类型推断。

    首页 上一页 1 2 3 下一页 尾页 3/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Java 虚拟机 7:内存分配原则 下一篇通向架构师的道路(第二十六天)..

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目