有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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项目

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


共 (1) 个答案

  1. # 1 楼答案

    当getter数据类型设置为object时,无法比较SimpleObjectProperty,而且无论如何,getter不应设置为object

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