0

我是安卓新手。极大地减慢编码速度的一件事是以下语句产生的错误:

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

这似乎需要显式转换为 String 才能被接受,例如

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

可以关闭这个明确的演员要求吗?我已经告诉编译器期待一个字符串......

4

1 回答 1

3

可以关闭这个明确的演员要求吗?

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

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

强制转换表示类型系统没有像您希望的那样有效地工作的情况 - 您希望能够在编译时验证该get方法返回String- 兼容的引用。看看你能做些什么来做到这一点——如果你不能,你就会被演员困住。

于 2013-09-12T08:55:34.953 回答