在第33行中重新声明Integer'a'时,为什么jshell将引用变量显示为Integer的实例(请参阅第38和39行)?重新声明后,第34行显示'a'设置为null。当在第6行中声明“ a”但未给其赋值,或在第22行中将其重置为null时,“ a”不被视为Integer的实例。我希望当引用变量被重新声明时,由于其值为null,因此它不会是类型的实例;但是,事实并非如此。
{{1}}
答案 0 :(得分:5)
答案 1 :(得分:3)
问题是,尽管它说它设置为null,但实际上不是。有关更多详细信息,请参见在bug中添加的注释。
我已将错误标题更改为: JShell:应重新声明已声明的变量
我将尝试在JDK 12中修复。
第二个问题不是bug,Java不允许instanceof运算符不能为真-行为与javac完全匹配。