不使用注释的未经检查或不安全的操作

Unchecked or unsafe operations without using annotation

我从正在阅读的一本书中复制了这段代码...

import java.util.Comparator;

public class DefaultComparator<E> implements Comparator<E> {
    public int compare(E a, E b) throws ClassCastException {
        return ((Comparable<E>) a).compareTo(b);
    }
}

但它会抛出一个编译器警告,指出它使用了未经检查或不安全的操作。那么如何在不使用注释 @SuppressWarnings("unchecked")?

的情况下删除警告

您需要确保 E 正在扩展 Comparable class:

public class DefaultComparator<E extends Comparable<E>> implements Comparator<E> {
    public int compare(E a, E b) {
        return a.compareTo(b);
    }
}