Java - 从 Object 到 Map.Entry<String,String> 的未经检查的转换
Java - Unchecked cast from Object to Map.Entry<String,String>
我在 "Map.Entry entry = (Entry) o;"
上有一个 "unchecked cast from Object to 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;
}
}
谢谢大家,祝大家有个愉快的一天!
不要压制警告,它给你很好的建议!您选择将每个条目分配给无信息基础 class Object
,而不是更精确的类型 Map.Entry<String, String>
。如果您修复了 for 循环,您将消除警告:
for(Map.Entry<String, String> o : wp.entrySet()) {
编译器不喜欢将实例转换为派生的 class。这是因为您无法保证该实例 是 派生的 class。如果您对您的情况了解得更多,那很好,但这通常不是最佳做法。
您的 wp.entrySet() 正在返回一组 Map.Entry。所以使用Map.Entry!更好的是,如果您不删除通用类型,那么您应该:
for(Map.Entry<String, String> entry : wp.entrySet()) {
// ...
}
不需要转换它,因为你知道它是什么类型。
我在 "Map.Entry entry = (Entry) o;"
上有一个 "unchecked cast from Object to 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;
}
}
谢谢大家,祝大家有个愉快的一天!
不要压制警告,它给你很好的建议!您选择将每个条目分配给无信息基础 class Object
,而不是更精确的类型 Map.Entry<String, String>
。如果您修复了 for 循环,您将消除警告:
for(Map.Entry<String, String> o : wp.entrySet()) {
编译器不喜欢将实例转换为派生的 class。这是因为您无法保证该实例 是 派生的 class。如果您对您的情况了解得更多,那很好,但这通常不是最佳做法。
您的 wp.entrySet() 正在返回一组 Map.Entry。所以使用Map.Entry!更好的是,如果您不删除通用类型,那么您应该:
for(Map.Entry<String, String> entry : wp.entrySet()) {
// ...
}
不需要转换它,因为你知道它是什么类型。