compareTo(E)泛型

时间:2018-01-16 11:01:03

标签: java generics compareto

嗨,我有一个泛型的问题。我需要使方法“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;
}

2 个答案:

答案 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>