相关疑难解决方法(0)

Java的lambda语法有什么细分?

请解释Java 8的lambda方法的语法.

有很多解释了那里什么拉姆达功能,但我找不到语法的详尽的解释,而我发现很难学会正确复制的语法,因为我不明白为什么他们"按原样重写.

这是我遇到的一个常见案例,由NetBeans提供:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        new MainAppJFrame();
    });
}
Run Code Online (Sandbox Code Playgroud)

所以,不知何故,以下lambda表达式正在解析为匿名Runnable对象的run()方法:

() -> {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

->是lambda语法,对吧?花括号只是包含匿名方法代码.括号是否为空参数,因为在这种情况下我们正在创建一个Runnable.run()方法?

这一点对我来说都不太清楚.我假设编译器知道Runnable根据SwingUtilities.invokeLater(Runnable)方法预期的类型实例化匿名?如果有两种SwingUtilities.invokeLater方法仅在参数列表中有所不同,会发生什么?显然在这个特定情况下没有,但在其他地方可能:

interface ExampleLambdaConsumer {
    public void doSomething(Runnable r);
    public void doSomething(java.lang.reflect.Method m);
}

class C implements ExampleLambdaConsumer {
    // implementations for doSomething methods here

    public static void main(String[] args) {
        doSomething(() -> {
            // lambda method body here …
Run Code Online (Sandbox Code Playgroud)

java syntax lambda java-8

35
推荐指数
3
解决办法
7277
查看次数

我可以为接口创建对象吗?

是否可以为界面创建对象,如果是,我们怎么办?根据我的观点,以下代码说我们可以:

Runnable r= new Runnable(){ // some implementation }

java

13
推荐指数
4
解决办法
5万
查看次数

标签 统计

java ×2

java-8 ×1

lambda ×1

syntax ×1