Java中函数内的函数

时间:2011-08-17 17:57:35

标签: java

是否可以在Java中定义函数内的函数?我正在尝试做类似的事情:

public static boolean fun1()
{
  static void fun2()
  {
     body of function.
     fun2();
  }
  return returnValue;
}

但我收到错误Illegal start of expression

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:34)

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

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