2016-05-29 5 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