0

我有这段代码:

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”

谁能告诉我为什么会出现类型不兼容的错误,以及如何解决?

4

1 回答 1

0

getSource()方法被声明为返回一个类型为 的对象Object。你需要使用

public void widgetSelected(SelectionEvent e) {
    Table table = (Table) e.getSource();
}

如果您确定它将是一个Table对象。因为Object可以是其他任何东西,编译器会阻止分配不兼容的引用。

于 2013-10-10T01:04:41.510 回答