Create/call 函数中的函数

Create/call a function within a function

是否可以在另一个函数中创建一个函数?如果没有,我应该如何定义一个函数才能在另一个函数中调用它?

是的,这是可能的。你可以在你的方法中立即声明它们,但是你可以在你的方法中声明一个 class(一个 local class),其中有一个函数 class,或者您可以在表达式中定义 anonymous class。

此功能已添加到 Java 1.1 中以支持在方法内定义的此类函数。

示例:

public class X {
    interface Func {
        int plus(int x);
    }

    public void myFunc() {
        final int z = 3;

        myOtherFunc(new Func() {  // Anonymous class declaration
            public int plus(int x) {
                return z + x;
            }
        });
    }

    public void myOtherFunc(Func f) {
         System.out.println(f.plus(8));
    }
}

在 Java 版本 8 和更高版本中,您可以声明这种类型的匿名 class,它只以一种更好的方式实现一种方法:

myOtherFunc(x -> z + x);