功能接口,功能方法和lamda?

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

我使用lambda函数中的功能方法实现了功能接口。一切正常,除了我得到必须执行此继承的抽象方法(在我的情况下为函数方法)的错误。在这里我很困惑。我使用了lambda函数来实现此功能方法,为什么还要再次实现该方法。如何正确实现功能方法?我的代码:

interface MyFunction {
  int getValue(int num); }

class Factorial implements MyFunction {
  public static void main (String [] args) {
        MyFunction myFactorialFunc = (num) -> {
            int fact = 1;
            for(int i = 1; i <= num; i++){
                fact = i * fact;
            }
            return fact;
        };
        System.out.println(myFactorialFunc.getValue(7));
}
}

感谢您的帮助。 :)

java functional-interface lambdaexpression
1个回答
0
投票

您定义了Factorial类来实现MyFunction,但是它没有实现该接口(int getValue(int num);)的方法。

在您的MyFunction中使用lambda表达式实现的main实例未为您的Factorial类实现该接口。

只需将其更改为:

class Factorial {
    public static void main (String [] args) {
        MyFunction myFactorialFunc = (num) -> {
            int fact = 1;
            for(int i = 1; i <= num; i++){
                fact = i * fact;
            }
            return fact;
        };
        System.out.println(myFactorialFunc.getValue(7));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.