JAVA - 익명클래스(Anonymous class)에 대하여

익명클래스(Anonymous class)에 대하여








 자바에서 익명클래스란 말그대로 이름이 없고, 한 줄로 선언되거나 생성되는 클래스를 말한다. 
익명클래스는 복잡할 수 있지만, 익명클래스는 몇 가지 간단한 메소드만 있는 소규모 클래스에 가장 적합하다.





익명클래스 사용방법

1
2
3
new 인터페이스이름 or 클래스이름 {
      클래스 바디
}
cs


클래스 바디안에서는 인터페이스나 추상클래스를 구현해야 한다.


People 인터페이스
1
2
3
public interface People {
    public void run();
}
cs


Hello 추상클래스
1
2
3
4
5
6
public abstract class Hello {
    public void sayHello() {
        System.out.println("안녕");
    }
}
cs

익명클래스 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Anonymous {
    public static void main(String[] args) {
        
        People people = new People() {
            
            @Override
            public void run() {
                System.out.println("달려라 하니 !");
                
            }
        };
        
        Hello hello = new Hello() {
            @Override
            public void sayHello() {
                // TODO Auto-generated method stub
                System.out.println("안녕하세요!!");
            }
        };
        
        
        people.run(); // 달려라 하니 !
        
        hello.sayHello(); // 안녕하세요!! 
        
        
        // 이렇게도 가능하다. 
        new People() {
            
            @Override
            public void run() {
                
            }
        };
    }
}
cs


위에 예제에서 봤듯이 인터페이스나 추상클래스안에 메서드가 많아지면 그만큼 익명클래스에서 구현을 해줘야하는 단점이 있다.
익명클래스는 소수의 메서드만 있을때 구현하는 것이 바람직하다.
보통 함수에서 메서드의 파라미터로 클래스로 받을경우 그 클래스를 구현하기 위한 익명클래스로 많이 사용된다. 

익명클래스를 사용할때 주의할점 

- 익명클래스는 생성자를 가질 수 없다 그러므로 익명클래스를 생성할 때 파라미터를 넣을수가 없다.

- 지역변수를 포함하여 익명 클래스가 선언된 블록 안에서 접근할수가 있다.

댓글

이 블로그의 인기 게시물

Filter url 제외시키기

[Spring,Java] Validator 구현하기

[Spring] Mock framework에 대하여