Java事件 - e.getSource错误的类类型

时间:2013-10-10 01:01:52

标签: java events

我有这段代码:

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”

任何人都可以告诉我为什么我会收到不兼容的类型错误,以及如何修复它?

1 个答案:

答案 0 :(得分:0)

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

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

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