java - 将变量名称永久转换为新类型
问题描述
我知道这不是一个好主意,原因有很多,但如果我有类似的情况:
Dog s = new ShihTzu();
s.beCute();
Error: line 2 - cannot find symbol - method beCute()
((ShihTzu) s).beCute();
It's adorable!
在与 相同的范围内Dog s
,我可以将变量名称永久重新s
转换为类型ShihTzu
吗?
还是完全不可能?一旦一个变量被定义为一个类型,那么,在它的当前范围内,就没有办法改变它了吗?
解决方案
不,这是不可能的。当您将变量声明为某种类型时,就无法更改。
Java规范说:
如果使用形式参数的名称在方法、构造函数或 lambda 表达式的主体内声明新变量,则会出现编译时错误,除非新变量是在方法、构造函数包含的类声明中声明的,或 lambda 表达式。
如果使用局部变量 v 的名称来声明 v 范围内的新变量,则会出现编译时错误,除非新变量是在声明在 v 范围内的类中声明的。
推荐阅读
- css - 如何在反应组件中调试 webpacker CSS 加载问题?
- openedge - 我如何理解 FOR EACH 和 FOR FIRST 之间的区别?
- php - 我使用唯一验证时出现重复输入错误
- java - Selenium Webdriver“Actions”的执行速度有多快?
- r - 读取“下一行分隔”的文本文件
- python - Pandas Dataframe 无法定位具有不同数据类型的列
- c - 尝试从用户输入的数组中获取最小数字时出现分段错误
- sql-server - 获取 Datagridview 组合框中所选项目的 ID 并显示取决于 Selectedvalue 的表单
- python - 如何反向批量标准化
- android - android 是否加密通过 HttpConnection Post 或 Retrofit 等库发送的 https 标头?