如何满足 Java 编译器对设置 SimpleObjectProperty 的未检查警告
How to satisfy Java compiler's unchecked warning for setting a SimpleObjectProperty
我有这个class:
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 时我是否可以做一些合理的事情来避免未经检查。我已经尝试了一些东西,谷歌搜索很接近,但还不够接近,我无法弄清楚。
ObjectProperty<Date>
是参数化类型。您正确地声明了您的实例变量类型 (ObjectProperty<Date>
),但是您没有在从方法 theDateProperty()
返回的参数化类型中声明类型参数。这个方法应该这样声明:
public ObjectProperty<Date> theDateProperty()
之后,所有警告都消失了。
我有这个class:
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 时我是否可以做一些合理的事情来避免未经检查。我已经尝试了一些东西,谷歌搜索很接近,但还不够接近,我无法弄清楚。
ObjectProperty<Date>
是参数化类型。您正确地声明了您的实例变量类型 (ObjectProperty<Date>
),但是您没有在从方法 theDateProperty()
返回的参数化类型中声明类型参数。这个方法应该这样声明:
public ObjectProperty<Date> theDateProperty()
之后,所有警告都消失了。