我想要一种方法,该方法去除相同类型的两个向量的重叠部分,然后进行连接并返回。
public static Vector<?> concatenateVector(Vector<?> baseVector, Vector<?> additionVector) {
if (baseVector.getClass().equals(additionVector.getClass())) {
additionVector.removeAll(baseVector);
baseVector.addAll((Collection<?>) additionVector);
return baseVector;
} else
return null;
}
但发生了错误:
The method addAll(Collection<? extends capture#3-of ?>) in the type Vector<capture#3-of ?>
is not applicable for the arguments (Vector<capture#4-of ?>)
从Vector
切换到Collection
仍然有相同的问题。
也许还有另一种好方法?
答案 0 :(得分:1)
一种方法是从通配符转换为参数化类型。
public static <T> Vector<T> concatenateVector(Vector<T> baseVector, Vector<T> additionVector) {
if (baseVector.getClass().equals(additionVector.getClass())) {
additionVector.removeAll(baseVector);
baseVector.addAll(additionVector);
return baseVector;
} else
return null;
}
答案 1 :(得分:0)
尝试将通配符更改为通用类型。
public static <T> Vector<T> concatenateVector(Vector<T> baseVector, Vector<T> additionVector) {
additionVector.removeAll(baseVector)
baseVector.addAll(additionVector);
return baseVector;
}
我删除了getClass,因为两者都返回了向量,所以对于泛型类型,此验证不是必需的。
if (baseVector.getClass().equals(additionVector.getClass())) {