如何为 SimpleObjectProperty<Date> 编写比较器

How to write a comparator for 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 项目。

这里的关键是如何比较 ObjectObject?

当 getter 数据类型设置为 object 时,您无法比较 SimpleObjectProperty,并且 getter 不应设置为 object ] 反正

SimpleObjectProperty实际上是一个泛型:SimpleObjectProperty<T>,数据类型为T。因此,就我而言,将 getter 的数据类型从 Object 更改为 Date 并将比较器修改为这样读取: return o1.getFirstFoundDate().compareTo(o2.getFirstFoundDate()) 解决了问题。