问题标签 [java-10]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 10 中的“受限关键字”和“保留类型名称”之间的概念区别是什么?
Java 10 带有新的局部变量类型推断。令牌var
可用于减少声明变量时所需的样板文件。例如
根据Java 10 中的“var”到底是什么类型的令牌?这个新标记不是“关键字”,而是“保留类型名称”。因此,“var”一词仍然可以用作变量名,以保持与现有代码的向后兼容性。
当 Java 9 中引入“模块”特性时,这个新标记的类型(连同它的 9 个其他相关标记)被称为“受限关键字”。也就是说,它们仅在某些特定上下文限制下才被视为关键字。例如,您仍然可以拥有称为模块的变量。
当新的语言特性以不破坏现有用户定义符号的方式添加到 C++ 时,它们被称为“上下文敏感关键字”。
var
Java 10 中新的“保留类型名称”标记与“上下文敏感关键字”或“受限关键字”之间是否存在概念差异。也就是说,var
在某些特定上下文的限制下,新令牌实际上不仅仅是一个关键字。如果是这样,为什么不简单地将其添加到“受限关键字”列表中?
为了进一步增加我的困惑, JLS的当前草案版本说:
字符序列 var 通常被视为标识符,但在某些特殊情况下,它就像是关键字一样。
这个定义当然听起来像一个“受限关键字”。
java - java-10 中的 XXXSummaryStatistics 新构造函数
我看到为(和)java-10
添加了一个构造函数,它接受 4 个参数,即、和。IntSummaryStatistics
LongSummaryStatistics
DoubleSummaryStatistics
count
min
max
sum
我理解为什么存在无参数构造函数,以便将其用于减少,例如:
这是有道理的,但是为什么需要添加带有 4 个参数的构造函数呢?(我在自己的回答中做了一个假设,但如果不是这样,我很乐意收回它。)
java - java-10 中的 Collectors.toUnmodifiableList
你如何创建一个Unmodifiable
List/Set/Map Collectors.toList/toSet/toMap
,因为toList
(等)文档为:
不保证返回的 List 的类型、可变性、可序列化性或线程安全性
在java-10 之前,您必须提供Function
with Collectors.collectingAndThen
,例如:
java - 为什么不允许使用 'var' 的复合定义?
好吧,我真的认为这会起作用(在方法内):
但它没有,它不会编译 - “复合定义中不允许使用 var”。
我想这样做的原因是通常的权衡。这不是一个非常常用的功能,因此没有实现,但我们可以肯定并且可能在未来的版本中......
java - Optional.get() 与重载 Optional.orElseThrow()
如何避免Exception
在尝试从 anOptional
或在使用时显式地抛出一个值Optional.get
?
目前,这可能通过 API 得到保护orElseThrow
:
然而,get
在尝试访问类似
如果一个人想确保其中Optional
一个有一个值,如果没有,他们不想继续null
向前传播怎么办?
java - 在 java 10 中使用局部变量类型推断的限制
Java 10 引入了局部变量类型推断功能JEP-286。
我们可以使用 Local-Variable Type Inference 使用var
保留类型名称
但是使用它有一些限制。
有人可以总结一下在哪些情况下我将无法使用 var 吗?
java - 可以将具有推断类型的局部变量重新分配给不同的类型吗?
我记得在某处读到,具有推断类型的局部变量可以用相同类型的值重新分配,这是有道理的。
但是,我很好奇如果您要重新分配x
给不同类型的对象会发生什么。这样的东西还能编译吗?
我目前无法安装 JDK 10 的早期版本,并且不想等到明天才能找到。
java - Java 10 编译的类可以在 9 上运行吗?
如果我理解正确,Java 10 的二进制形式与 Java 9 100% 相同,所以它不应该有任何问题。
我的假设正确吗?
java - 无法使用 Maven 编译简单的 Java 10 / Java 11 项目
我有一个简单的 Maven 项目:
pom.xml:
当我通过 构建项目时mvn -X install -DskipTests=true
,它失败了:
有没有办法来解决这个问题?