Ben*_*tan 3 java casting hashtable
我在"Map.Entry entry =(Entry)o;"上有一个"从Object到Map.Entry的未经检查的强制转换".
我认为一切正常,我可以安全地添加抑制警告,但我不确定.这是我的代码.
public abstract class WebPath {
protected Hashtable<String, String> wp;
public String get(String whatDoYouWant) {
for (Object o : wp.entrySet()) {
Map.Entry<String, String> entry = (Entry<String, String>) o;
if (whatDoYouWant.equals(entry.getKey())) {
return (String) entry.getValue();
}
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家,祝你有个美好的一天!
不要压制警告,它给你很好的建议!您选择将每个条目分配给无信息的基类Object,而不是更精确的类型Map.Entry<String, String>.如果您修复了for循环,则会消除警告:
for(Map.Entry<String, String> o : wp.entrySet()) {
Run Code Online (Sandbox Code Playgroud)
当您采用实例并将其转换为派生类时,编译器不喜欢它。这是因为您不能保证该实例是该派生类。如果您对自己的情况有更好的了解,那很好,但通常不是最佳实践。
您的wp.entrySet()返回一个Map.Entry集。因此,请使用Map.Entry!如果您不删除泛型类型,那就更好了,因此您应该具有:
for(Map.Entry<String, String> entry : wp.entrySet()) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
无需强制转换,因为您知道它是什么类型。
| 归档时间: |
|
| 查看次数: |
3324 次 |
| 最近记录: |