我有一个名为 Identifier 的类和其他一些名为 Variable、Scalar 等的类,它们都是从 Identifier 扩展而来的。
所以当我像这样声明一个新的 Hashmap 时:
Hashmap<String, ? extends Identifier> hm = new Hashmap<String, ? extends Identifier>();
调用时的返回类型是什么:
hm.get(String)
因为显然这样的事情是无效的:
(? extends Identifier) temp = hm.get(String);
如果不进行一些类型转换或使用通用对象作为类型,我真的不知道解决方案,这两种我都不想做。
最佳答案
你不可能知道。您所知道的是它属于 Identifier
类型,这就是您应该对这种情况做出的所有假设。
public Identifier getValue(string value) {
return hm.get(value);
}
关于java - 使用通配符时 Java Hashmap 的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20011050/