我目前正在重构一些旧代码,我发现了一个片段,我不明白如何为 Swing 应用程序框架类正确使用泛型TaskListener.Adapter
。
这是相关的代码片段:
public void executeTask(Task<?, ?> task, boolean handleException) {
task.addTaskListener(new TaskListener.Adapter() { /* <-- Two warnings here */
@Override
public void failed(TaskEvent event) { /* ... */ }
});
getContext().getTaskService().execute(task);
}
1.首先我想摆脱警告。“未经检查的转换”和“找到原始类型”。我尝试将代码更改为new TaskListener.Adapter<Object, Object>
,但随后出现错误“无法应用于给定类型”。(Task<?, ?>
由于声明,我在这里唯一可以使用原始类型吗?
2.failed
方法的声明org.jdesktop.application.TaskListener.Adapter
是public void failed(TaskEvent<Throwable> event)
,但是如果我尝试将我的代码更改为:
@Override
public void failed(TaskEvent<Throwable> event) { /* ... */ }
我得到“方法不会覆盖超类型中的方法”。我必须再次使用 raw TaskEvent
。这是为什么?
感谢您的帮助。
编辑: Javadoc for TaskListener on Jarvana。