嗨,我有一个泛型的问题。我需要使方法“max”通用,以便它可以用于不同类型的集合。
但是我收到的错误是它与E
无法比较public static <E> E max(List<E> list) {
Iterator<E> iterator = list.iterator();
E maximum = iterator.next();
while (iterator.hasNext()) {
E x = iterator.next();
if (maximum.compareTo(x) < 0) {
maximum = x;
}
}
return maximum;
}
答案 0 :(得分:2)
您必须LDAP_ENTRY_DN, LDAP_ID, createTimestamp, modifyTimestamp, postal_code
来实施E
:
Comparable<E>
这使编译器知道只有public static <E extends Comparable<E>> E max(List<E> list) {
Iterator<E> iterator = list.iterator();
E maximum = iterator.next();
while (iterator.hasNext()) {
E x = iterator.next();
if (maximum.compareTo(x) < 0) {
maximum = x;
}
}
return maximum;
}
个实现List
的元素可以传递给该方法。
答案 1 :(得分:1)
@Eran的回答可能对你的用例来说已经足够好了,但是max函数的更灵活的签名将是
static <E extends Comparable<? super E>> E max(List<E> list)
所以扩展Circle
类的Shape
类也可以实现Comparable<Shape>
。