【发布时间】:2018-03-19 21:54:10
【问题描述】:
我记得在某处读到,具有推断类型的局部变量可以用相同类型的值重新分配,这是有道理的。
var x = 5;
x = 1; // Should compile, no?
但是,我很好奇如果您将 x 重新分配给不同类型的对象会发生什么。这样的东西还能编译吗?
var x = 5;
x = new Scanner(System.in); // What happens?
我目前无法安装 JDK 10 的早期版本,不想等到明天才知道。
【问题讨论】:
-
如果它们都是相同的类型,那么它应该可以工作,否则不行。从 C# 的经验来看,我相信在 java 中使用
var的功能相同。 -
类型推断不是动态类型。它只是编译器从其初始化程序的类型中找出变量的类型。一旦编译器在你的声明中为
x推断出int,你就声明了一个int类型的变量。这就是整个故事;推理没有额外的作用。 -
顺便说一句无法安装 JDK 10 的早期版本(出于什么原因?什么故障或错误)可能是一个更好的问题。 ;)
-
@nullpointer 完全无关 :P 这是一台学校发行的计算机,他们不希望我们安装东西,不幸的是!
-
:) 也许你是对的。但是从这个角度来看,您的问题可能听起来像 “我无法安装 Java,有人可以告诉我
int x = 1;在使用它时是否编译?” 不是吗?然后答案就像,我已经在某某机器上试过了。是的,它编译或不,它没有。
标签: java object variables type-inference java-10