(set1); -6ren">
gpt4 book ai didi

java - 向 EnumSet 添加类型参数总是给我 "Bound mismatch"

转载 作者:行者123 更新时间:2023-12-02 05:22:38 25 4
gpt4 key购买 nike

我有下面的代码:

public static <E> Set<E> union(Set<E> set1, Set<E> set2) {
Set<E> resultSet = new HashSet<>(set1);
resultSet.addAll(set2);
return resultSet;
}

我想重载如下所示的一个方法,并得到绑定(bind)不匹配:

 public static <E> Set<E> union(EnumSet<E extends Enum<E>> set1, EnumSet<E extends Enum<E>> set2){
Set<E> resultSet = set1.clone();
resultSet.addAll(set2);
return resultSet;
}

我改成下面的,但不起作用。

为什么?我该怎么办?

最佳答案

类(class)EnumSet声明如下

public abstract class EnumSet<E extends Enum<E>> extends ... implements ... { ... }

在这里可以看到类型变量E被限制为 Enum<E> 的子类型。因此,您必须以相同的方式约束静态方法的类型变量:

public static <E extends Enum<E>> Set<E> union(EnumSet<E> set1, EnumSet<E> set2) {
Set<E> resultSet = set1.clone();
resultSet.addAll(set2);
return resultSet;
}

关于java - 向 EnumSet 添加类型参数总是给我 "Bound mismatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377596/

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