小编典典

可以将具有推断类型的局部变量重新分配给其他类型吗?

java

我记得在某处读过,可以用相同类型的值重新分配具有推断类型的局部变量,这很有意义。

var x = 5;
x = 1; // Should compile, no?

但是,我很好奇,如果您重新分配x给其他类型的对象,将会发生什么。这样的东西还会编译吗?

var x = 5;
x = new Scanner(System.in); // What happens?

我目前无法安装JDK 10的早期版本,也不想等到明天才能找到答案。


阅读 208

收藏
2020-11-19

共1个答案

小编典典

无法编译,抛出 “不兼容的类型:扫描仪无法转换为int” 。局部变量类型推断不会改变Java的静态类型性质。换一种说法:

var x = 5;
x = new Scanner(System.in);

只是用于以下目的的语法糖:

int x = 5;
x = new Scanner(System.in);
2020-11-19