我有下面的代码:
public static <E> Set<E> union(Set<E> set1, Set<E> set2) {
Set<E> resultSet = new HashSet<>(set1);
resultSet.addAll(set2);
return resultSet;
}
我想重载一个方法,如下所示,并得到绑定不匹配:
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;
}
我换到下面,它不起作用。
为什么?我该怎么办?
类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;
}