【问题标题】:Java event - Class type of e.getSource errorJava 事件 - e.getSource 错误的类类型
【发布时间】:2013-10-10 01:01:51
【问题描述】:

我有这段代码:

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”

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

【问题讨论】:

    标签: java events


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,它照顾它。如果我能弄清楚如何将您的答案标记为“那个”,我会这样做。
    • @user2512168 不客气。您可以使用小箭头对其进行投票,也可以选中复选标记以接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2018-12-28
    • 2021-04-17
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多