2011-01-19 2 views
2

Java에서 메서드/생성자 선언을 다른 메서드/생성자 선언 안에 표시 할 수 있습니까? 예 :Java에서 메서드/생성자 선언을 다른 메서드/생성자 선언 안에 표시 할 수 있습니까?

void A() { 
    int B() { } 
} 

나는 생각하지만 안심할 수 있습니다.

+2

당신은 옳다고 생각합니다. –

+0

생성자 내부의 생성자조차도 필요하지 않습니까? –

+1

요점은 무엇입니까? 생성자는 다른 생성자의 인스턴스가 아닌 클래스의 인스턴스를 생성합니다. –

답변

5

아니오. 그것은 편집 할 수 없습니다.

+0

첫 번째 답변으로 선정되었습니다. –

2

아니요, Java는 다른 메소드가 아닌 클래스 내에서만 메소드를 정의 할 수 있습니다.

3

하지 직접 있지만 는 방법으로 클래스의 메소드를 가질 수 있습니다

class A { 
    void b() { 
     class C { 
      void d() { 
      } 
     } 
    } 
} 
+0

예, 그 가능성을 알고 있습니다. +1 –

2

이 자바 수 없습니다. 그러나 코드가 복잡 해지더라도이 인터페이스로 구현할 수 있습니다.

interface Block<T> { 
    void invoke(T arg); 
} 
class Utils { 
    public static <T> void forEach(Iterable<T> seq, Block<T> fct) { 
    for (T elm : seq) 
     fct.invoke(elm); 
    } 
} 
public class MyExample { 
    public static void main(String[] args) { 
    List<Integer> nums = Arrays.asList(1,2,3); 
    Block<Integer> print = new Block<Integer>() { 
     private String foo() { // foo is declared inside main method and within the block 
     return "foo"; 
     } 
     public void invoke(Integer arg) { 
     print(foo() + "-" + arg); 
     } 
    }; 
    Utils.forEach(nums,print); 
    } 
} 
관련 문제