2012-05-28 2 views
1

가능한 중복 :
How are Anonymous (inner) classes used in Java?자바 객체를 만들 때 서브 클래 싱?

내가 자바에 대한 질문이 있습니다. 나는 개체를 만들 때 클래스가 자동으로 실행됩니다 ... 많은 소스에 서브 클래스 인 경우

Class object = new Class() 
{ 
    // What is this, a subclass or what ? 
    public void someRandomMethod() 
    { 
    } 
}; 

음을이를 보았다? 나는 혼란 스럽다

그리고 내 영어에 대해 유감스럽게 생각하며 최선을 다한다.

감사합니다.

답변

3

anonymous class이라고합니다. 예, 클래스가 자동으로 확장됩니다. 이 패턴은 Runnable 또는 ActionListener과 같은 콜백 인터페이스를 만드는 데 가장 일반적으로 사용됩니다.

Thread foo = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     System.out.println("Hello World"); 
    } 
}); 
foo.start(); // Hello World 

Runnable의 새로운 인스턴스를 생성하고 실행하기위한 Thread로 전달한다. 이것은 closures에 대한 Java의 초기 대체품이었습니다.

+0

하지만 단순한 객체 클래스에서는 그런 식으로 사용할 수 없습니까? 예와 같이, 또는 runnable - actionlistener 객체에만 유효합니다. – Kai

+0

또는 @Overrided 메소드의 경우? – Kai

+0

@Kai 확장 할 수있는 모든 클래스에 사용할 수 있습니다. 익명 클래스에서 오버라이드되지 않은 메서드를 만드는 것은 의미가 없으므로 호출 할 수 없습니다. – Jeffrey