Java 10 类型推理的局部变量可以推断无效吗?

2022-09-02 09:41:36

在Java 10中,我们可以使用类型推断。

String s1 = "hello"; // before Java 10
var s2 = "hello"; // now

但是,有一件事是我们以前无法做到的:具有 void 类型的变量。

因此,在以前的版本中,我们根本无法定义 变量类型 。但是现在我们可以将方法返回的结果赋给变量:voidvoid

void emptyMethod() { }
...

void v1 = emptyMethod(); // won't compile
var v2 = emptyMethod(); // no problem at all

问题是 - 为什么它甚至编译,它有什么目的?你对这个奇怪的东西有什么用例吗?

类型的变量没有方法,它甚至不能用作方法的参数。void


答案 1

你认为它为什么编译?它不会编译:

> javac Main.java
Main.java:5: error: cannot infer type for local variable v2
        var v2 = emptyMethod(); // no problem at all
            ^
  (variable initializer is 'void')
1 error

你可能使用IntelliJ IDEA,是吗?IDEA目前没有检测到这种错误。有一个错误:https://youtrack.jetbrains.com/issue/IDEA-188623


答案 2

推荐