Java中使用lambda定义的类

问题描述 投票:0回答:1

我对 Java 中的 OOP 进行了测试,他们问下面的代码定义了多少个类。

问题是关于这个 cod 中的 lambda 表达式。 lambda 表达式启动一个匿名类,但这里的表达式位于一个迭代 3 次的 for 循环中。 他是开3个班还是只开1个班?

如果有必要的话,我们正在使用 JDK 17。

我尝试询问 Chat GPT,但他不可靠,我尝试寻找答案,但在网上找不到完整且具体的答案。

public interface AI {
     int f();
}

public class Main {

    public static void main(String[] args) {
        AI ai;
        for(int i = 0; i < 3; i++) {
            int j = i;
            ai = () -> j + 2;
        }
    }

}
java oop lambda jvm
1个回答
0
投票
public interface AI {
     int f();
}

public class Main {

    public static void main(String[] args) {
        AI ai;
        for(int i = 0; i < 3; i++) {
            int j = i;
            ai = () -> j + 2;
        }
    }

}

这段代码定义了多少个? 二。 人工智能和主要。 Lambda 不是类或匿名类。

这段代码分配了多少个对象? 没有指定。 然而,创建 lambda 所涉及的机制可能会分配大量对象,但这些对象都不明显。 lambda 对象不太可能被重用,因为它捕获了

j,但编译器完全消除 for 循环也是合法的。

	

© www.soinside.com 2019 - 2024. All rights reserved.