2016-05-29 30 views
0

我有这个类:如何满足Java编译器的未检查的警告设置一个SimpleObjectProperty

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来避免未选中。我已经尝试了一些东西,并且Google搜索功能接近完成,但对于我来说这还不够完整。

回答

2

ObjectProperty<Date>是参数化类型。您正确声明了您的实例变量类型(ObjectProperty<Date>),但是您没有声明从方法theDateProperty()返回的参数化类型中的类型参数。这个方法应该这样声明:

public ObjectProperty<Date> theDateProperty()

之后,所有的警告都没有了。

+0

谢谢你,ctomek。我希望我今天有足够的声望来增加你的答案。 – mrmsbarnes

+0

@mrmsbarnes您可以做的是通过点击投票计数下的商标来接受该答案。 ; ) – ctomek