如何满足Java编译器未设置的警告以设置SimpleObjectProperty

时间:2016-05-29 17:49:54

标签: java object-property

我有这堂课:

package mydate;

import java.util.Date;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;

public class MyDate {
    private final ObjectProperty<Date> theDate;

    public MyDate(Date d) { theDate = new SimpleObjectProperty<>(d); }

    public ObjectProperty theDateProperty() { return theDate; }

    public Date getTheDate() { return (Date)theDateProperty().get(); }
    //@SuppressWarnings("unchecked")
    public void setTheDate(Date value) { theDateProperty().set(value); }
}

这是一个使用它的简单应用程序:

package unchecked;
import java.util.Date;
import mydate.*;

public class Unchecked {

    public static void main(String[] args) {
        MyDate myDate = new MyDate(new Date(0));
        System.out.println(myDate.getTheDate().toString());
    }
}

我想知道是否有办法让编译器满足setTheDate。我可以抑制未经检查的警告,但是我想知道在使用ObjectProperty和SimpleObjectProperty时是否可以做一些合理的事情以避免未经检查。我已经尝试了一些东西,谷歌搜索接近但不够接近,我无法弄清楚这一点。

1 个答案:

答案 0 :(得分:2)

ObjectProperty<Date>是参数化类型。您已正确声明了实例变量类型(ObjectProperty<Date>),但未在方法theDateProperty()返回的参数化类型中声明类型参数。应该以这种方式声明此方法:

public ObjectProperty<Date> theDateProperty()

之后,所有警告都消失了。