java如何为SimpleObjectProperty编写比较器<Date>
我尝试了以下方法,但都没有成功:
public static Comparator<ModelDefects> sortFirstFoundDateAscending() {
return new Comparator<ModelDefects>() {
@Override
public int compare(ModelDefects o1, ModelDefects o2) {
return o1.getFirstFoundDate() - o2.getFirstFoundDate();
}
};
}
public static Comparator<ModelDefects> sortFirstFoundDateAscending() {
return new Comparator<ModelDefects>() {
@Override
public int compare(ModelDefects o1, ModelDefects o2) {
return o1.getFirstFoundDate().compareTo(o2.getFirstFoundDate());
}
};
}
还通过if
语句尝试了<
运算符。这些也不起作用。大量的在线搜索并没有向我透露答案
首次发现日期及其方法定义如下:
//Declaration:
private SimpleObjectProperty<Date> firstfounddate;
//Initialisation in Constructor:
this.firstfounddate = new SimpleObjectProperty<>();
//First Found Date
public Object getFirstFoundDate() {
return firstfounddate.get();
}
public void setFirstFoundDate(Date firstFoundDateArg) {
this.firstfounddate.set(firstFoundDateArg);
}
public SimpleObjectProperty<Date> firstFoundDateProperty() {
return firstfounddate;
}
这是一个javafx项目
我这里的关键是如何比较Object
和Object
# 1 楼答案
当getter数据类型设置为
object
时,无法比较SimpleObjectProperty
,而且无论如何,getter不应设置为object
SimpleObjectProperty
实际上是一个泛型:SimpleObjectProperty<T>
,数据类型为T
。因此,在我的例子中,将getter的数据类型从Object
更改为Date
,并将比较器修改为:return o1.getFirstFoundDate().compareTo(o2.getFirstFoundDate())
解决了这个问题