Java 10附带了新的局部变量类型推断.令牌var可用于减少声明变量时所需的样板.例如
var s = "hello";
Run Code Online (Sandbox Code Playgroud)
根据什么类型的令牌在Java 10中完全是"var"?这个新令牌不是"关键字",而是"保留类型名称".因此,单词"var"仍然可以用作变量名,它保持与现有代码的向后兼容性.
var var = "you can do this";
Run Code Online (Sandbox Code Playgroud)
当在Java 9中引入"模块"功能时,这个新令牌的类型(以及其他9个相关令牌)被称为"受限制的关键字".也就是说,它们仅被视为特定上下文特定限制下的关键字.例如,您仍然可以使用称为模块的变量.
当新的语言功能以不会破坏现有用户定义符号的方式添加到C++时,它们被称为"上下文相关关键字".
varJava 10中新的"保留类型名称" 标记与"上下文相关关键字"或"受限制关键字" 之间是否存在概念差异.也就是说,var在某些特定于上下文的限制下,新令牌不仅仅是一个关键字.如果是这种情况,为什么不将它简单地添加到"受限制的关键字"列表中?
为了进一步增加我的混淆,JLS的当前草案版本说:
字符序列var通常被视为标识符,但在某些特殊情况下,其行为就像是关键字一样.
这个定义听起来像是一个"受限制的关键字".
我刚刚发现您可以将其var用作字段名。
var var = "";
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?作为字段名的任何其他关键字将无法编译。
var string = ""; // error
Run Code Online (Sandbox Code Playgroud) 我需要在我的ArrayList. 我不需要删除重复项,我需要将它们添加到另一个ArrayList. 下面是一个例子:
ArrayList<String> var = new ArrayList<>();
var.add("a");
var.add("b");
var.add("b");
var.add("c");
Run Code Online (Sandbox Code Playgroud)
因此,如您所见,有 2 个重复元素(b 和 b)。我需要将它们添加到另一个 ArrayList。
所产生的ArrayList在这种情况下应该是[b,b]。我怎样才能做到这一点?
我正在阅读 Java 10 中发布的新功能,我发现了这一点:
Java 10
var作为保留类型名称引入以减少冗长。它可以用作变量、方法和包名,但我们不能将其用作类或接口名。
是否var类似于varJavaScript 中的关键字?Javavar和 JavaScript之间究竟有何异同var?
java ×4
java-10 ×2
arraylist ×1
c# ×1
c#-3.0 ×1
duplicates ×1
java-stream ×1
keyword ×1
var ×1