以下代码:
public void addGrillaListener(Stage stageToClose,Grilla listener)
{
GrillaHandler<WindowEvent> handy = new GrillaHandler<>(listener);
if(stageToClose!=null)
{
stageToClose.addEventHandler(WindowEvent.WINDOW_HIDDEN,handy);
}
}
使编译器显示该消息。我该如何避免?
额外信息:
- Grilla 是一个舞台界面
- GrillaHandler 是一个 EventHandler 子类,它将 Grilla 作为构造函数参数
- 使用 JDK 7,允许使用 GrillaHandler<>
- 编译器消息相当不明确 - 它指出此方法使用未经检查或不安全的操作
- stage是oracle提供的类,是javafx的一部分
Grilla处理程序:
public class GrillaHandler<T> implements EventHandler {
private Grilla win;
public GrillaHandler(Grilla win) {
this.win=win;
}
@Override
public void handle(Event t) {
win.loadTable();
}
}
烧烤:
public interface Grilla {
public void loadTable();
}
最佳答案
将代码更改为
public class GrillaHandler<T extends Event> implements EventHandler<T>{
//...
}
JavaFX EventHandler是参数化类型。您在 GrillaHandler
的声明中遗漏了那个。您被迫在类声明中提供类型参数或重新声明类型参数,因为您似乎根据声明要求。
关于指定类型时 javac "uses unchecked or unsafe operations",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250064/