2013-10-10 45 views
0

我有這段代碼:Java事件 - e.getSource錯誤的類型

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(); 
    } 
}); 

似乎很明顯該事件的來源應該是一個表對象,但是當試圖編譯我得到這個錯誤:

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

getSource()方法被聲明爲返回類型爲Object的對象。您需要使用

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

如果您確定它會是Table對象。因爲Object可以是其他任何東西,所以編譯器會阻止分配不兼容的引用。

+0

謝謝,這照顧它。如果我能弄清楚如何將你的答案標記爲「那個」,我會這樣做。 – Allasso

+0

@ user2512168不客氣。您可以使用小箭頭對其進行加註,也可以選中複選標記以接受它。 –