티스토리 뷰
728x90
우리는 개발을 하다가 보면 한번만 사용 될 클래스가 필요한 경우가 있다.
그런 상황에서 새로운 클래스를 만드는 것은 깔끔하지 못한 방법이라고 생각든다.
그럴 때 사용할 수 있는 것이 익명 클래스(Anonymous inner class)이다.
익명 클래스는 크게 두 가지 방법으로 구현될 수 있다.
1. class
2. interface
또한 이러한 익명 클래스의 타입은 크게 3가지가 존재한다.
1. 클래스를 확장하는 익명 클래스
//Java program to illustrate creating an immediate thread
//Using Anonymous Inner class that extends a Class
class MyThread
{
public static void main(String[] args)
{
//Here we are using Anonymous Inner class
//that extends a class i.e. Here a Thread class
Thread t = new Thread()
{
public void run()
{
System.out.println("Child Thread");
}
};
t.start();
System.out.println("Main Thread");
}
}
(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java )
이와 같이 기존의 클래스에 함수를 구현하는 방식이 존재한다.
2. 인터페이스를 구현하는 익명 클래스
//Java program to illustrate defining a thread
//Using Anonymous Inner class that implements an interface
class MyThread
{
public static void main(String[] args)
{
//Here we are using Anonymous Inner class
//that implements a interface i.e. Here Runnable interface
Runnable r = new Runnable()
{
public void run()
{
System.out.println("Child Thread");
}
};
Thread t = new Thread(r);
t.start();
System.out.println("Main Thread");
}
}
(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java/ )
이와 같이 기존의 인터페이스를 구현하는 방식으로 익명 클래스를 생성할 수 있다.
3. 생성자나 메서드의 내부 인자를 정의하는 익명 클래스
//Java program to illustrate defining a thread
//Using Anonymous Inner class that define inside argument
class MyThread
{
public static void main(String[] args)
{
//Here we are using Anonymous Inner class
//that define inside argument, here constructor argument
Thread t = new Thread(new Runnable()
{
public void run()
{
System.out.println("Child Thread");
}
});
t.start();
System.out.println("Main Thread");
}
}
(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java/ )
이와 같이 익명 클래스가 인자가 되어 생성자나 메서드의 내부 인자가 된다.
'개발 일기' 카테고리의 다른 글
[Visual Studio] Visual Studio 팁 정리 ( 단축키, 간단한 팁 등등 ) (0) | 2020.05.18 |
---|---|
[Oracle] 오류 ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. (0) | 2020.01.12 |
[자바(Java)] Mysql과 JDBC 연결 중 오류 해결 (0) | 2019.11.21 |
[MySQL Server] MySQL Server 설치 오류 해결법 (0) | 2019.11.20 |
[자바(Java)] Mysql과 JDBC 연결 중 오류 (0) | 2019.11.20 |
댓글