Java中函数内的函数

Har*_*ngh 26 java

是否可以在Java中定义函数内的函数?我想做的事情如下:

public static boolean fun1()
{
  static void fun2()
  {
     body of function.
     fun2();
  }
  return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

但我收到了错误Illegal start of expression.

Mik*_*sen 40

你不能这样做的原因是函数必须是附加到类的方法.与JavaScript和类似语言不同,函数不是数据类型.有一种方法可以将它们组合成一个支持Java中的闭包(希望在Java 8中),但是从Java 6和7开始,它不受支持.如果你想做类似的事情,你可以这样做:

interface MyFun {
    void fun2();
}

public static boolean fun1()
{
  MyFun fun2 = new MyFun() {
      public void fun2() {
          //....
      }
  };
  fun2.fun2();
  return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

  • +1为一个很好的例子:) (4认同)

MBy*_*ByD 37

你不能(在Java中它们被称为方法).

但是,您可以在方法内部定义匿名类,并调用其方法.

  • 正如我所看到的,方法和函数之间存在差异,而函数独立存在,方法与类或对象相关. (4认同)
  • @YoushaAleayoub - 谢谢,这个答案是在Java 8之前给出的,现在我们得到了lambdas :) (3认同)
  • 澄清很有用,因为所有 java 文档都使用这个概念。苛刻的(或其他任何人)会通过正确的命名更容易地找到有关方法的未来问题的答案。 (2认同)