什么类型的代币确切地说是;var";在Java10中?

什么类型的代币确切地说是;var";在Java10中?,java,java-10,Java,Java 10,在上一期Heinz Kabutz的时事通讯中,显示了var在Java 10中不是保留字,因为您还可以使用var作为标识符: public class Java10 { var var = 42; // <-- this works } 公共类Java10{ var=42;//根据,var是 不是关键字;而是保留类型名称 (早期版本的JEP为实现保留类型名或上下文敏感关键字留下了空间;最终选择了前一条路径。) 因为它不是“保留关键字”,所以仍然可以在变量名(和包名)中使用它,但不能

在上一期Heinz Kabutz的时事通讯中,显示了
var
在Java 10中不是保留字,因为您还可以使用
var
作为标识符:

public class Java10 {
    var var = 42; // <-- this works
}
公共类Java10{
var=42;//根据,
var

不是关键字;而是保留类型名称

(早期版本的JEP为实现保留类型名或上下文敏感关键字留下了空间;最终选择了前一条路径。)

因为它不是“保留关键字”,所以仍然可以在变量名(和包名)中使用它,但不能在类或接口名中使用它

我认为不将
var
作为保留关键字的最大原因是向后兼容旧的源代码

var是保留类型名称var不是关键字,它是保留类型 名字

我们可以创建一个名为“var”的变量。

你可以阅读更多细节

var var = 5; // syntactically correct
// var is the name of the variable
“var” as a method name is allowed.

public static void var() { // syntactically correct 
}
“var” as a package name is allowed.

package var; // syntactically correct
“var” cannot be used as the name of a class or interface.
class var{ } // Compile Error
LocalTypeInference.java:45: error: 'var' not allowed here
class var{
      ^
  as of release 10, 'var' is a restricted local variable type and cannot be used for type declarations
1 error

interface var{ } // Compile Error

var author = null; // Null cannot be inferred to a type 
LocalTypeInference.java:47: error: cannot infer type for local variable author
                var author = null;
                    ^
  (variable initializer is 'null')
1 error

@bhspencer关键字在3.9中有明确定义。上下文敏感关键字是另外一种东西。没有“断开的”这里。提供了一个非常清晰的关键字定义:您不能使用一个作为标识符。因此,从这个意义上说,
var
实际上不是一个关键字。顺便说一句。上下文相关关键字对Java来说并不新鲜。它们已经出现在Java 9中。例如,您可以声明
模块
。上下文相关关键字是一个字符序列t在特定产品中被认为具有语法意义,但在其他情况下被视为普通标识符。(这通常在编译的解析阶段进行管理。)保留类型标识符是一种不能用作类型名称的标识符(在编译的属性阶段处理)@BrianGoetz bhspencer提出了一个新问题,这可能是该问题的一个好答案。@FedericoPeraltaSchaffner
var var=42
Integer var=42
的字节码完全相同;这里只针对编译器,因此它是一个类型名。请注意,这与
Integer=4没有太大区别2
(upvote重新打开,真的想让这一个也成为一个答案)我编辑了规范答案。@bhspencer更正;它从两个选项的分离(反映项目开始时的选项)更新为“保留类型标识符”(反映最终结果)JEP是活生生的文档;设计在开始和结束之间演变是很常见的,理想情况下,我们会更新JEP以反映实际情况。@bhspencer,因为受限类型标识符是指定和实现所需结果的更简单、更清晰的方法。我们本可以使用受限关键字,但它会更具侵入性在语法和规范中,没有增加的好处。该特性的规范草案已经公开一年了;最终版本(在集成到主规范之前)在这里:(链接自)。