mre*_*rek 19 java type-inference java-10
使用Java 10,我们可以使用类型推断.
String s1 = "hello"; // before Java 10
var s2 = "hello"; // now
Run Code Online (Sandbox Code Playgroud)
但是,有一件事我们以前做不到:有类型为void的变量.
因此,在以前的版本中,我们根本无法定义变量类型void.但是现在我们可以将方法的结果分配给void变量:
void emptyMethod() { }
...
void v1 = emptyMethod(); // won't compile
var v2 = emptyMethod(); // no problem at all
Run Code Online (Sandbox Code Playgroud)
问题是 - 它为什么甚至编译,它的目的是什么?你有这个奇怪的用例吗?
类型变量void没有方法,甚至不能用作方法的参数.
Zhe*_*lov 32
为什么你认为它编译?它不编译:
> 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
Run Code Online (Sandbox Code Playgroud)
您可能使用IntelliJ IDEA,对吗?IDEA目前没有检测到这种错误.有一个错误:https://youtrack.jetbrains.com/issue/IDEA-188623
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |