我对 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;
}
}
}
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 循环也是合法的。