Ответ 1
Вы не можете (и в Java они называются методами).
Однако вы можете определить анонимный класс внутри метода и вызвать его методы.
Можно ли определить функцию внутри функции в Java? Я пытаюсь сделать что-то вроде:
public static boolean fun1()
{
static void fun2()
{
body of function.
fun2();
}
return returnValue;
}
но я получаю ошибку Illegal start of expression
.
Вы не можете (и в Java они называются методами).
Однако вы можете определить анонимный класс внутри метода и вызвать его методы.
Причина, по которой вы не можете сделать этого, состоит в том, что функции должны быть приложены к классу. В отличие от 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;
}