gpt4 book ai didi

java - 为什么当我在 main 方法中实现 lambda 表达式时,编译器不说接口(interface)已实现?

转载 作者:行者123 更新时间:2023-12-02 09:29:39 25 4
gpt4 key购买 nike

当我在主方法中将接口(interface)实现为 Lambda 表达式时,它不会被视为已实现。

我知道我可以在 main 方法之外实现它,但我不明白如果我必须在 main 方法之外实现它,为什么我应该使用 Lambda 表达式。

public class Driver implements Interface1, Interface2, Interface3 {

public static void main(String[] args) {

//Implementing Interface1
double x;
Interface1 obj = () -> 5.5;
x = obj.foo();
System.out.println(x);

//Implementing Interface2
String str;
Interface2 obj2 = (a) -> String.format("The number is %d", a);
str = obj2.foo(356);
System.out.println(str);

//Implementing Interface3

boolean tF;
Interface3 obj3 = (i, s) -> i == Integer.parseInt(s);


tF = obj3.foo(30, "30");
System.out.print(tF);

}

在这里,我在第 1 行收到一条错误消息,告诉我接口(interface)未实现。它仍然可以编译并工作,我只是不明白为什么会收到此消息。当前输出为:

5.5
The number is 356
true

最佳答案

您所做的就是在主方法中定义局部变量,其类型恰好与必须实现的接口(interface)一致。

您必须在类中定义方法,为该类的所有接口(interface)提供实现。例如:

public class Driver implements Interface1, Interface2, Interface3 {
public static void main(String[] args) {
// all code in here is irrelevant to the class implementing Interface1, Interface2, Interface3
}

public void interface1Method() {
// whatever
}

public void interface2Method() {
// whatever
}

public void interface3Method() {
// whatever
}
}

请注意,您不能为此使用 lambda; 驱动程序实际上必须声明其声明正在实现的所有接口(interface)中缺少的方法的实现。

关于java - 为什么当我在 main 方法中实现 lambda 表达式时,编译器不说接口(interface)已实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com