我正在寻找有关如何处理一些可能实现可比元素和某些不可实现元素的建议。
我目前正在尝试这样做
class BinaryTree<E> {
private Comparator<E> comparator;
public <T extends Comparable<E>>() BinaryTree() {
comparator = (T a, T b) -> a.compareTo(b)
}
public BinaryTree(Comparator<E> comparator) {
this.comparator = comparator
}
}
//rest of the class (add, remove etc)
然后使用比较器变量。我无法编译它。
只需检查是否已提供比较器即可。如果是这样,请使用它。否则,
presume
对象会实现它。缺点是,如果对象没有实现它,您将得到运行时异常而不是编译器错误。
class BinaryTree<E> {
private Comparator<E> comparator = null;
public BinaryTree() {
}
public BinaryTree(Comparator<E> myComparator) {
this.comparator = myComparator;
}
public void traverse() {
if (comparator != null) {
//use it
} else {
// compare Objects presuming they implement comparable.
}
}
}