중첩 클래스, 로컬 클래스, 익명 클래스 및 람다 표현식 중에서 선택하기
중첩 클래스 섹션에서 언급했듯이 중첩 클래스를 사용하면 한 곳에서만 사용되는 클래스를 논리적으로 그룹화하고, 캡슐화 사용을 늘리고, 더 읽기 쉽고 유지 관리하기 쉬운 코드를 만들 수 있습니다. 로컬 클래스, 익명 클래스 및 람다 표현식도 이러한 이점을 제공하지만 보다 구체적인 상황에서 사용하기 위한 것입니다:
- 로컬 클래스: 클래스의 인스턴스를 두 개 이상 생성하거나 생성자에 액세스하거나 새로운 명명된 타입을 도입해야 하는 경우(예: 나중에 추가 메서드를 호출해야 하기 때문) 사용합니다.
- 익명 클래스: 필드 또는 추가 메서드를 선언해야 하는 경우 사용합니다.
- 람다 표현식:
- 다른 코드에 전달하려는 단일 동작 단위를 캡슐화할 때 사용합니다. 예를 들어 컬렉션의 각 요소에 특정 작업을 수행하거나 프로세스가 완료될 때 또는 프로세스에 오류가 발생할 때 람다 표현식을 사용할 수 있습니다.
- 함수형 인터페이스의 간단한 인스턴스가 필요하고 앞의 기준 중 어느 것도 적용되지 않는 경우(예: 생성자, 명명된 타입, 필드 또는 추가 메서드가 필요하지 않은 경우) 이 표현식을 사용합니다.
- 중첩 클래스: 요구 사항이 로컬 클래스와 유사하고, 타입을 더 광범위하게 사용하고자 하며, 로컬 변수나 메서드 매개 변수에 액세스할 필요가 없는 경우에 사용합니다.
- 둘러싸는 인스턴스의 비공개 필드 및 메서드에 대한 액세스가 필요한 경우 비정적 중첩 클래스(또는 내부 클래스)를 사용합니다. 이러한 액세스가 필요하지 않은 경우 정적 중첩 클래스를 사용합니다.