중첩 인터페이스
는 한 클래스의 내부에서 인터페이스를 선언한 것을 의미합니다. 중첩 클래스와 마찬가지로 한 클래스와 인터페이스가 긴밀한 관계를 가지면 따로 선언하는 것보다 중첩 인터페이스
로 선언하는 것이 사용하기도, 관리하기도 편리하기 때문입니다.
class A {
interface B {}
}
중첩 인터페이스의 접근 제어자는public, private
가 올 수 있습니다.
마찬가지로 static
제어자도 붙일 수 있습니다. static
제어자를 사용하면 외부 클래스 객체를 생성하지 않아도 중첩 인터페이스를 사용할 수 있게 됩니다.
public class A {
public interface B { //중첩 인터페이스 선언
void sayHi(); //추상 메소드
}
private B b; //인터페이스 타입 멤버 변수
public void createB(B b) { //중첩 인터페이스 구현 객체를 파라미터로 받음
this.b = b;
}
public void callSayHi() {
this.b.sayHi();
}
}
public class Main {
public static void main(String[] args) {
A a = new A();
class CallInnerInterface implements A.B { //중첩 인터페이스 구현 객체
@Override
public void sayHi() {
System.out.println("Hi");
}
}
a.createB(new CallInnerInterface());
a.callSayHi();
}
}
구현이 조금 복잡할 수도 있는데 중첩 인터페이스
의 용도가 주로 UI 프로그래밍에서 이벤트 처리에 사용되기 때문입니다.