java - 使用通配符时 Java Hashmap 的返回类型

标签 java generics hashmap wildcard

我有一个名为 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/

相关文章:

java - Maven 测试不使用 Spring Boot 2.2 和 JUnit 5 运行 Cucumber 场景

android - SimpleArrayMap 和 ArrayMap 是为了保持顺序吗?

java - 如何正确使用双坐标作为 HashMap 中的键?

C# 通用处理器

java - 在这种情况下如何声明和使用通用映射

Java 8 Stream filter map in map -- Map<String,Map<String,Employee>>

Java:如何确定对象数组中对象的类型?

java - 创建将文本字段发送到 Android sql 的应用程序有多容易/困难?

java - 经过漫长的等待后将文件发送给客户端

generics - Dart 2 runtimeType 和具体化泛型 - Java Class<T> 等价物