这是一个学校项目。我有一个Query<E>
类,它包含一个属于Query
条件的元素。因此,如果它是GreaterQuery
并且元素是10,则所有大于10的值都会通过该条件。
此Query
对象的构造函数接受元素,并使用Comparator
对象来测试条件。如果传入null,我需要创建一个Comparator
来用于比较。
我有一个match(E element)
方法来测试条件。这是它的骨架版本:
public boolean matches(E element)
{
if (comparator == null)
{
}
}
我认为我能做的是在Comparator
语句中写一个匿名的if
类,虽然我不确定这是否可行。我遇到的另一个问题是如何在不了解它们的情况下与E
对象进行比较。此外,我不确定这一点,但可能存在E extends Comparable
的前提条件。现在已经很晚了,如果这没有道理,我会道歉。但任何帮助将不胜感激。
答案 0 :(得分:4)
如果E
保证实施Comparable<E>
,您可以执行此操作:
if (comparator == null) {
comparator = new Comparator<E>() {
@Override
public int compare(E lhs, E rhs) {
return lhs.compareTo(rhs);
}
};
}
答案 1 :(得分:1)
从Java 8开始,有一个method in the standard library可以完成克里斯回答中显示的内容:
if (comparator == null) {
comparator = Comparator.naturalOrder();
}