变量赋值所需的强制转换?

时间:2013-09-12 08:50:05

标签: java

我是Android新手。减慢编码速度的一件事是由以下语句生成的错误:

String logoPath = infoMap.get("LogoPath");

似乎需要对String进行显式强制转换才能被接受,例如

String logoPath = (String)infoMap.get("LogoPath");

是否可以关闭此显式演员表?我已经告诉编译器期望一个字符串......

1 个答案:

答案 0 :(得分:3)

  

是否可以关闭此显式演员表?

仅当您可以将表达式infoMap.get("LogoPath")更改为String类型时。我们目前不知道infoMap是什么,但如果您可以将其声明为Map<String, String>,那么它应该正常工作。也许您目前正在使用原始Map类型?

如果您无法更改infoMap.get(...)以返回String,则绝对需要演员。你基本上是对编译器说,“我知道你不能检查这个,但我确定这个方法返回的值是一个字符串引用(或null)。请在执行时检查。”它还可以警告任何人阅读代码,理论上(至少)有可能出错。

强制转换表示类型系统无法像您希望的那样有效工作的情况 - 您喜欢能够在编译时验证{{1 }}方法返回一个get兼容的引用。看看你能做些什么来做到这一点 - 如果你做不到的话,你就会遇到演员。