jdk1.8的lambda表达式

jdk1.8的lambda表达式,当两个方法的名称相同,但是参数类型不同,lambda表达式怎么写的

    public static void execute(Future<Integer> future){
        future = cs.submit(() -> {
            return 1;
        });
    }

    public static void execute(Runnable runnable){
        threadPool.execute(runnable);
    }

类似这种,

 public static void main(String[] args) {
        execute(() -> {

        });
    }

怎么去识别调用到哪个方法。

根据参数来区分来调用对应的lambda表达式

调用那个不用人为选择,是编译器根据函数的实参类型与行参类型匹配决定的,建议看看函数重载相关知识,自然会明白。

java核心技术 卷1 原书第10版 6.3.2节中,讲到:如果方法只有一个参数,而这个参数的类型可以推导得出,那么甚至可以省略小括号。

这个应该和方法重载的道理是一样的,根据传入的参数去区分