首页 > 解决方案 > 将变量名称永久转换为新类型

问题描述

我知道这不是一个好主意,原因有很多,但如果我有类似的情况:

Dog s = new ShihTzu();
s.beCute();

   Error: line 2 - cannot find symbol - method beCute()

((ShihTzu) s).beCute();

   It's adorable!

在与 相同的范围内Dog s,我可以将变量名称永久重新s转换为类型ShihTzu吗?

还是完全不可能?一旦一个变量被定义为一个类型,那么,在它的当前范围内,就没有办法改变它了吗?

标签: javatypescasting

解决方案


不,这是不可能的。当您将变量声明为某种类型时,就无法更改。

Java规范

如果使用形式参数的名称在方法、构造函数或 lambda 表达式的主体内声明新变量,则会出现编译时错误,除非新变量是在方法、构造函数包含的类声明中声明的,或 lambda 表达式。

如果使用局部变量 v 的名称来声明 v 范围内的新变量,则会出现编译时错误,除非新变量是在声明在 v 范围内的类中声明的。


推荐阅读