在jshell-11中,为什么重新声明为零的重新声明的引用变量仍然具有类型?

时间:2018-10-02 15:26:11

标签: java instanceof jshell java-11

在第33行中重新声明Integer'a'时,为什么jshell将引用变量显示为Integer的实例(请参阅第38和39行)?重新声明后,第34行显示'a'设置为null。当在第6行中声明“ a”但未给其赋值,或在第22行中将其重置为null时,“ a”不被视为Integer的实例。我希望当引用变量被重新声明时,由于其值为null,因此它不会是类型的实例;但是,事实并非如此。

{{1}}

2 个答案:

答案 0 :(得分:5)

我将其作为错误提出,并已被接受。

https://bugs.openjdk.java.net/browse/JDK-8211694

好地方。

答案 1 :(得分:3)

问题是,尽管它说它设置为null,但实际上不是。有关更多详细信息,请参见在bug中添加的注释。

我已将错误标题更改为:    JShell:应重新声明已声明的变量

我将尝试在JDK 12中修复。

第二个问题不是bug,Java不允许instanceof运算符不能为真-行为与javac完全匹配。