ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA import 방식 차이 - 단일 클래스 vs 와일드카드
    프로그래밍 2023. 12. 10. 20:10
    반응형

     

     

     

     

    Java에서 import 문은 다른 패키지의 클래스, 인터페이스, 또는 다른 멤버들을 현재 클래스에 사용할 수 있도록 해줍니다. Java에서는 다음과 같은 두 가지 주요한 import 방식이 있습니다.

     

     

    1. 명시적인 단일 클래스 가져오기 (Explicit Single Class Import):
      • 이 방식은 특정 클래스를 명시적으로 가져옵니다.
      • 예를 들어, import java.util.List;는 java.util 패키지의 List 클래스만을 가져옵니다.
      • 이 방식은 코드가 어떤 클래스를 사용하는지 명확하게 만들어 주어, 가독성과 유지보수성을 향상시킵니다.
    2. 와일드카드를 사용한 전체 패키지 가져오기 (Wildcard Package Import):
      • 이 방식은 특정 패키지의 모든 클래스를 가져옵니다.
      • 예를 들어, import java.util.*;는 java.util 패키지의 모든 클래스를 가져옵니다.
      • 이 방식은 특정 패키지의 많은 클래스를 사용할 때 편리하지만, 불필요한 클래스들도 함께 가져올 수 있고, 다른 패키지의 동일한 이름을 가진 클래스들과의 충돌 가능성이 있습니다.

     

     


     

     

    예를 들어, Java에서 import com.android.billingclient.api.BillingFlowParams.*;import com.android.billingclient.api.BillingFlowParams; 를 할 경우 아래와 같은 차이가 있다. 

     

     

    1. import com.android.billingclient.api.BillingFlowParams.*;:
      • 이 구문은 BillingFlowParams 클래스 내의 모든 public 멤버(클래스, 인터페이스, 열거형, 어노테이션)를 가져옵니다.
      • *는 와일드카드로 사용되며, BillingFlowParams 클래스 내의 모든 public 멤버를 현재 파일에서 직접 접근할 수 있게 해줍니다.
      • 예를 들어, BillingFlowParams 클래스 안에 Builder라는 public 클래스가 있다면, 이 import 문을 사용함으로써 직접 Builder를 참조할 수 있습니다(예: Builder builder = new Builder();).
    2. import com.android.billingclient.api.BillingFlowParams;:
      • 이 구문은 BillingFlowParams 클래스 자체만을 가져옵니다.
      • 클래스 내부의 어떤 멤버도 직접 가져오지 않습니다. 즉, BillingFlowParams 클래스를 사용할 수 있지만, 클래스 내부의 다른 멤버(예: 내부 클래스나 인터페이스)는 해당 멤버의 전체 경로를 사용해서 접근해야 합니다.
      • 예를 들어, BillingFlowParams.Builder와 같이 전체 경로를 명시해야 합니다.

    간단히 말해서, 첫 번째 구문은 클래스 내의 모든 public 멤버를 가져오는 반면, 두 번째 구문은 오직 그 클래스 자체만을 가져옵니다. 첫 번째 방식은 편리할 수 있지만, 때때로 이름 충돌을 일으킬 수 있어, 필요한 것만 명시적으로 가져오는 두 번째 방식이 좀 더 선호됩니다.

     

     


     

     

     

    일반적으로, 명시적인 단일 클래스 가져오기가 가장 권장되는 방식입니다. 이는 코드의 명확성과 유지보수성을 향상시키며, 잠재적인 이름 충돌을 방지합니다. 반면, 와일드카드 임포트는 특정 패키지의 많은 클래스를 사용할 때 편리하긴 하지만, 가독성과 성능에 미미한 영향을 줄 수 있습니다. 정적 임포트는 주로 잘 알려진 유틸리티 클래스의 메서드를 자주 사용할 때 유용합니다.

     

     

     

     

     

     

     

     

     

    728x90
    반응형
Designed by Tistory.