将java lambda表达式转换为1.6版本

时间:2017-06-01 14:56:10

标签: java lambda

我有一个用java 1.8编写的代码,我想将其转换为1.6版本。

此代码如下:

sourceSets {
    main.java{ 
        srcDirs = ['src/eu/conflicts', 'src/eu/utils'] 
        include '**/*.java'
    }

    test.java{
        srcDirs = ['src/eu/conflicts', 'src/eu/utils'] 
        include  '**/*Tests.java'
    }
}

我应该如何改造它?

问候!

1 个答案:

答案 0 :(得分: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