我有这段代码:
import org.eclipse.swt.widgets.Table;
....
Table table = code_that_returns_table_object;
table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Table table = e.getSource();
}
});
很明显,事件的来源应该是一个Table对象,但在尝试编译时我得到了这个错误:
incompatible types
found : java.lang.Object
required: org.eclipse.swt.widgets.Table
Table table = e.getSource();
如果我这样做:
table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println(e.getSource().getClass());
}
});
输出打印“org.eclipse.swt.widgets.Table”
任何人都可以告诉我为什么我会收到不兼容的类型错误,以及如何修复它?
答案 0 :(得分:0)
getSource()
方法被声明为返回类型为Object
的对象。你需要使用
public void widgetSelected(SelectionEvent e) {
Table table = (Table) e.getSource();
}
如果您确定它将是Table
对象。因为Object
可以是其他任何内容,编译器会阻止分配不兼容的引用。