2013-06-18 110 views
1

一個很簡單的問題,我想......但我怎麼做到類似如下:如何實現多種通用接口

public class MyHandler 
    implements ApplicationListener<ContextStartedEvent>,ApplicationListener<ContextStoppedEvent> 

當我嘗試這一點,它告訴我:「接口Applicationlistener不能實施不止一次使用不同的參數」

+2

這似乎與Spring沒有任何關係。您無法實現兩次相同的界面(並且在括號中鍵入的內容會在運行時擦除)。 –

+0

我想要的是兩個方法'onApplicationEvent(ContextStartedEvent事件)'和'onApplicationEvent(ContextStoppedEvent事件)',這是適當調用的(注意一個事件是開始事件,另一個是結束事件 – Nosrettap

+0

你不能實現相同接口兩次。泛型類型在運行時被擦除。如果你想實現多個監聽器,請檢查這個答案:http://stackoverflow.com/questions/8836073/is-it-possible-to-make-a-spring-applicationlistener -listen-for-2-more-types-o – gregwhitaker

回答

3

讓它:

class MyHandler implements ApplicationListener<ApplicationContextEvent> { 

    public void onApplicationEvent(ApplicationContextEvent event) { 
     if (event instanceof ContextStartedEvent) { 
      onContextStarted((ContextStartedEvent)event); 
     } 
     ... 
    } 

    private void onContextStarted(ContextStartedEvent event) { 
     ... 
    } 
} 

或創建爲每個事件類型都有一個單獨的處理程序。