Java重用接口方法

时间:2016-11-12 02:16:47

标签: java interface functional-programming expression

这是我使用的界面:

interface Command {
    void run(int a, int b, int c);
    void run(int a, int b, int c, int d, int e);
}

void add(Command c){

}

这是执行:(使用第一次运行方法)

    add((a, b, c) -> System.out.println(""));

我执行的错误是:

    The target type of this expression must be a functional interface

当我注释掉第二次运行方法时,这只会消失。

我希望能够使用两种运行方法执行相同的接口,而不必仅使用方法2创建新接口。

如何?

1 个答案:

答案 0 :(得分:1)

设计functional interface只允许有一种方法,所以你要做的就是不能直接完成,很清楚为什么:允许用lambda实现一个功能接口必须创建一个对象对于它的声明是有效的,如果它有两个方法你不能用一个lambda实现它们。

解决方法可能是使用可变参数,例如:

@FunctionalInterface
interface Command {
 void run(int... args); 
}

add(args -> { int z = args[0] + args[1] + args[2]; });