当前位置: 首页 > 知识库问答 >
问题:

为什么HashMap.条目不取其父类的泛型参数?

戚京
2023-03-14

我有一个HashMap类型的对象

下面是一个例子:

class Main extends HashMap<String, String>
{
    public static void main(String[] args)
    {
        Main m = new Main();
        m.put("key", "value");
    
        for (Main.Entry e : m.entrySet())
            String s = e.getValue(); // this line throws an error telling that getValue() returns Object and not String
    }
}

共有1个答案

桑鸿志
2023-03-14

不要定义原始条目,也要键入它

for (Main.Entry<String, String> e : m.entrySet()) {
    String s = e.getValue();
}
 类似资料:
  • 定义参数化类时,只能使用固定数量的参数。 但是,如果你想创建一个包含多个值的地图。必须使用映射

  • 问题内容: 在下面的示例中,为什么编译器能够为in中的第一次调用推断出通用参数,而在第二次调用中却无法推断出通用参数?我正在使用Java 6。 (编译错误为 Nonsense.Bar类型的func(Nonsense.Foo)方法不适用于参数(Nonsense.Foo) )。 注意:我了解编译器错误可以通过test()中的第三行来解决-我很好奇是否存在阻止编译器推断类型的特定限制。这 似乎 对我有足

  • 问题内容: 我正在使用泛型编写某些东西,令我惊讶的是,我发现这行不通: 那我不能实例化泛型吗?没有任何方法可以做到这一点吗? 问题答案: 是的,这真是令人讨厌。 我使用的解决方法是强制客户端在构造新类时传递类-即 然后您可以使用。

  • 为什么<代码>列表 我不明白编译器的消息和编译错误的原因。 返回类型没有问题:

  • 问题内容: 我有一个通用的抽象模板类。我以为如果创建特定于类型的生产者,则可以直接在通用类中注入一些DAO服务。但是我不能。 为什么?我该如何解决? 当我注入一个例如它完美地工作。但是没有泛型… 问题答案: 当您要求 容器知道您要一个类型为的bean 。如果存在这样的bean并且其类型信息已知,则容器可以满足注入。例如,类型信息保留在带注释的方法中 容器使用反射来检索该参数化的类型,并将其与请求的

  • 请按顺序阅读代码中的注释,问题详细信息在那里<为什么会出现这种差异 如果可能,请引用JLS。 我最初在IntelliJ IDEA中发现了这一点,但我猜编译器与javac兼容,因为当我用以下代码编译上述代码时,它给出了相同的错误/警告。