2017-06-01 31 views
4

我有一個用java 1.8製作的代碼,我想將其轉換爲使其適用於1.6。將java lambda表達式轉換爲1.6版本

此代碼是以下之一:

private void handleCanNotConnect(Throwable cause) { 
    isConnected = false; 
    fireAll(l -> l.connectionFailed(cause)); 
} 

private void fireAll(Consumer<MyListener> action){ 
    action.accept(listener); 
} 

如何,我應該改變它?

問候!

回答

4

回到lambda函數之前,我們將實例化匿名類來動態實現接口。

這裏是一個接口,因爲Consumer<MyListener>不可用:

public interface MyConsumer { 
    public void accept(MyListener l); 
} 

然後你可以使用:

private void handleCanNotConnect(final Throwable cause) { 
    isConnected = false; 
    fireAll(new MyConsumer() { 
     @Override 
     public void accept(MyListener l) { 
      l.connectionFailed(cause); 
     } 
    }); 
} 

private void fireAll(MyConsumer action){ 
    action.accept(listener); 
} 

注意,cause被標記爲final

+1

'消費者'是從1.8開始的,不是嗎? –

+0

@StefanWarminski哦對。還有那個。謝謝。 – khelwood

+0

真棒!謝謝 – user4919313