-
JAVA import 방식 차이 - 단일 클래스 vs 와일드카드프로그래밍 2023. 12. 10. 20:10728x90반응형
Java에서 import 문은 다른 패키지의 클래스, 인터페이스, 또는 다른 멤버들을 현재 클래스에 사용할 수 있도록 해줍니다. Java에서는 다음과 같은 두 가지 주요한 import 방식이 있습니다.
- 명시적인 단일 클래스 가져오기 (Explicit Single Class Import):
- 이 방식은 특정 클래스를 명시적으로 가져옵니다.
- 예를 들어, import java.util.List;는 java.util 패키지의 List 클래스만을 가져옵니다.
- 이 방식은 코드가 어떤 클래스를 사용하는지 명확하게 만들어 주어, 가독성과 유지보수성을 향상시킵니다.
- 와일드카드를 사용한 전체 패키지 가져오기 (Wildcard Package Import):
- 이 방식은 특정 패키지의 모든 클래스를 가져옵니다.
- 예를 들어, import java.util.*;는 java.util 패키지의 모든 클래스를 가져옵니다.
- 이 방식은 특정 패키지의 많은 클래스를 사용할 때 편리하지만, 불필요한 클래스들도 함께 가져올 수 있고, 다른 패키지의 동일한 이름을 가진 클래스들과의 충돌 가능성이 있습니다.
예를 들어, Java에서 import com.android.billingclient.api.BillingFlowParams.*; 와 import com.android.billingclient.api.BillingFlowParams; 를 할 경우 아래와 같은 차이가 있다.
- import com.android.billingclient.api.BillingFlowParams.*;:
- 이 구문은 BillingFlowParams 클래스 내의 모든 public 멤버(클래스, 인터페이스, 열거형, 어노테이션)를 가져옵니다.
- *는 와일드카드로 사용되며, BillingFlowParams 클래스 내의 모든 public 멤버를 현재 파일에서 직접 접근할 수 있게 해줍니다.
- 예를 들어, BillingFlowParams 클래스 안에 Builder라는 public 클래스가 있다면, 이 import 문을 사용함으로써 직접 Builder를 참조할 수 있습니다(예: Builder builder = new Builder();).
- import com.android.billingclient.api.BillingFlowParams;:
- 이 구문은 BillingFlowParams 클래스 자체만을 가져옵니다.
- 클래스 내부의 어떤 멤버도 직접 가져오지 않습니다. 즉, BillingFlowParams 클래스를 사용할 수 있지만, 클래스 내부의 다른 멤버(예: 내부 클래스나 인터페이스)는 해당 멤버의 전체 경로를 사용해서 접근해야 합니다.
- 예를 들어, BillingFlowParams.Builder와 같이 전체 경로를 명시해야 합니다.
간단히 말해서, 첫 번째 구문은 클래스 내의 모든 public 멤버를 가져오는 반면, 두 번째 구문은 오직 그 클래스 자체만을 가져옵니다. 첫 번째 방식은 편리할 수 있지만, 때때로 이름 충돌을 일으킬 수 있어, 필요한 것만 명시적으로 가져오는 두 번째 방식이 좀 더 선호됩니다.
일반적으로, 명시적인 단일 클래스 가져오기가 가장 권장되는 방식입니다. 이는 코드의 명확성과 유지보수성을 향상시키며, 잠재적인 이름 충돌을 방지합니다. 반면, 와일드카드 임포트는 특정 패키지의 많은 클래스를 사용할 때 편리하긴 하지만, 가독성과 성능에 미미한 영향을 줄 수 있습니다. 정적 임포트는 주로 잘 알려진 유틸리티 클래스의 메서드를 자주 사용할 때 유용합니다.
728x90반응형'프로그래밍' 카테고리의 다른 글
aws opensearch - python으로 접속하기 (0) 2024.03.07 맥북에서 압축 풀 때 파일 한글이름 깨지는 현상 해결 (0) 2024.02.14 bigquery에서 특정 그룹의 필드 값을 구분자로 합치기 (0) 2023.06.22 google sheet 내용 python으로 읽고 쓰기 (0) 2023.04.27 how to get rank of each user in firestore (0) 2023.04.02 - 명시적인 단일 클래스 가져오기 (Explicit Single Class Import):