【发布时间】:2021-12-24 22:04:29
【问题描述】:
这让我感到意外:我能够声明一个名为 record 的变量,尽管它现在已成为关键字。看看这个:
public class Main {
static class Foo {
void bar() { System.out.println("Foo.bar"); }
}
record R (int a) {}
public static void main(String[] args) {
Foo record = new Foo();
record.bar();
R r = new R(5);
System.out.println(r);
}
}
当使用 Java 17 编译和运行时,会给出:
Foo.bar
R[a=5]
我曾预计这会导致错误,就像尝试声明名为 class 的变量时一样。我认识 Java 人,他们非常小心地不破坏现有代码,所以我认为这可能是一个深思熟虑的选择。
(你甚至不能声明一个名为 const 的变量,因为在 Java 中有一个 const is a keyword。)
【问题讨论】:
标签: java jls java-17 java-record