Подтвердить что ты не робот

Функция внутри функции в Java

Можно ли определить функцию внутри функции в Java? Я пытаюсь сделать что-то вроде:

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

но я получаю ошибку Illegal start of expression.

4b9b3361

Ответ 1

Вы не можете (и в Java они называются методами).

Однако вы можете определить анонимный класс внутри метода и вызвать его методы.

Ответ 2

Причина, по которой вы не можете сделать этого, состоит в том, что функции должны быть приложены к классу. В отличие от 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;
}