1. 소개
이 짧은 사용방법(예제)에서는 Java의 내부 인터페이스를 살펴보겠습니다. 주로 다음 용도로 사용됩니다.
- 인터페이스에 공통 이름이 있는 경우 네임스페이스 문제 해결
- 캡슐화 증가
- 관련 인터페이스를 한 곳에서 그룹화하여 가독성 향상
잘 알려진 예는 Map 인터페이스 내부에 선언된 Entry 인터페이스 입니다. 이렇게 정의하면 인터페이스는 전역 범위에 속하지 않고 Map.Entry 로 참조되어 다른 Entry 인터페이스와 구별되고 Map 과의 관계가 명확해집니다.
2. 내부 인터페이스
정의에 따라 내부 인터페이스의 선언은 다른 인터페이스나 클래스의 본문에서 발생합니다.
다른 인터페이스(최상위 인터페이스의 필드 선언과 유사)에서 선언될 때 필드뿐만 아니라 암시적으로 공용 및 정적이며 어디에서나 구현할 수 있습니다.
public interface Customer {
// ...
interface List {
// ...
}
}
다른 클래스 내에서 선언된 내부 인터페이스도 static 이지만 구현될 수 있는 위치를 제한할 수 있는 액세스 지정자를 가질 수 있습니다.
public class Customer {
public interface List {
void add(Customer customer);
String getCustomerNames();
}
// ...
}
위의 예에서 새 항목 추가, 문자열 표현 가져오기 등과 같은 고객 List에 대한 일부 작업을 선언하는 역할을 하는 List 인터페이스가 있습니다.
List 는 일반적인 이름이며 이 인터페이스를 정의하는 다른 라이브러리와 함께 작업하려면 선언을 분리해야 합니다. 즉, 네임스페이스 입니다.
CustomerList 와 같은 새 이름을 사용하지 않으려는 경우 내부 인터페이스를 여기에서 사용합니다 .
또한 캡슐화를 개선하는 두 개의 관련 인터페이스를 함께 유지했습니다.
마지막으로 구현을 계속할 수 있습니다.
public class CommaSeparatedCustomers implements Customer.List {
// ...
}
3. 결론
우리는 Java의 내부 인터페이스를 간략하게 살펴보았습니다.
항상 그렇듯이 코드 샘플은 GitHub 에서 찾을 수 있습니다 .