Java 함수에서 함수를 정의 할 수 있습니까? 나는 다음과 같이하려고 노력하고있다 :Java 함수 내 함수
public static boolean fun1()
{
static void fun2()
{
body of function.
fun2();
}
return returnValue;
}
그러나 나는 오류 Illegal start of expression
를 얻고있다.
Java 함수에서 함수를 정의 할 수 있습니까? 나는 다음과 같이하려고 노력하고있다 :Java 함수 내 함수
public static boolean fun1()
{
static void fun2()
{
body of function.
fun2();
}
return returnValue;
}
그러나 나는 오류 Illegal start of expression
를 얻고있다.
당신은 할 수 없습니다. (자바에서는 메소드라고 부릅니다.)
그러나 익명의 클래스를 메서드 내부에서 정의하고 해당 메서드를 호출 할 수 있습니다.
이렇게 할 수없는 이유는 함수가 클래스에 연결된 메소드 여야하기 때문입니다. JavaScript 및 유사한 언어와 달리 함수는 데이터 유형이 아닙니다. 자바로 클로저를 지원하기위한 움직임이 있지만 (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 좋은 예를 들어 :) – MByD
중첩 된 메소드가 필요한 작업은 무엇입니까? –
function2의 코드는 내 코드에서 fun1로 세 번 나타납니다 (내 교역 주문과 일치하는 큰 기능 임). fun1의 많은 지역 변수를 사용합니다. –
그래서 두 개의 중첩되지 않은 메소드를 갖는 데있어서의 문제점은 무엇입니까? 그런 다음 function2 내에서 원하는만큼 여러 번 function2를 호출하십시오. –