gpt4 book ai didi

Enum 类型的 Java 泛型

转载 作者:行者123 更新时间:2023-12-02 00:42:51 25 4
gpt4 key购买 nike

我正在尝试编写一个Java类,其中一部分需要将未知枚举的值映射到另一个类。我的类包含一个字段 private Map<? extends Enum, Unit> myMap并使用工厂方法 createMyClass 进行初始化:

public static MyClass <T extends Enum> myClass createMyClass(Class<T> x) {
MyClass theClass = new MyClass() //constructor is private
//...
myMap = new HashMap<T, Unit>();
for(T t : x.getEnumConstants())
myMap.put(t, theClass.new Unit(t));
//...
}

类(class)Unit是(据我所知,并且需要是) MyClass 的内部类。当我将其放入 NetBeans 中时,它会发出以下消息:

method put in interface java.util.Map<K,V> cannot be applied to given types
required: capture #4 of ? extends java.lang.Enum, MyClass.Unit
found: T, MyClass.Unit

我理解(或者至少我认为我理解)集合需要非常小心通配符的使用以保持类型安全,但我不知道如何 T extends Enum无法匹配? extends Enum .

最佳答案

尝试将方法声明更改为:

public static <T extends Enum<T>> MyClass createMyClass(Class<T> x) {
}

关于Enum 类型的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com