Package — 클래스 로더와 연관된 런타임 패키지의 메타데이터

Package — 클래스 로더와 연관된 런타임 패키지의 메타데이터

Package클래스 로더와 연관된 런타임 패키지(run-time package)에 대한 메타데이터를 나타내는 클래스예요. 메타데이터에는 애너테이션, 버전, 실링(sealing)이 포함돼요.

출처: Java API Reference

본문

런타임 패키지에 대한 애너테이션은 그 런타임 패키지의 클래스들과 같은 코드 소스에 있는 package-info.class에서 읽혀요.

런타임 패키지를 구성하는 클래스 집합은 특정 스펙(specification)을 구현할 수 있어요. 스펙 제목·버전·벤더(스펙의 소유/유지자를 나타냄)는 Package가 정의될 때 제공될 수 있어요. 애플리케이션은 Package.isCompatibleWith(String) 메서드로 그 패키지가 특정 스펙 버전과 호환되는지 물어볼 수 있어요. 또한 런타임 패키지를 구성하는 실제 클래스들에 대한 정보(구현 제목·버전·벤더, 즉 클래스의 공급자를 나타냄)도 정의 시점에 제공될 수 있어요.

PackageClassLoader.definePackage(...) 메서드로 명시적으로 정의될 수 있어요. 호출자가 스펙·구현의 제목·버전·벤더를 제공하고, 패키지가 sealed인지도 나타내요. 만약 런타임 패키지에 대한 Package가 명시적으로 정의되지 않은 채 그 패키지의 클래스가 정의되면, 그 클래스의 정의 클래스 로더가 다음과 같이 자동으로 Package를 정의해요. 명명된 모듈의 클래스들에 대해 자동 정의되는 Package는 특정 속성들을 갖게 돼요.

AnnotatedElement를 구현하는 클래스로, 자바 1.2부터 제공돼요.

주요 메서드

  • String getName() — 이 패키지의 이름을 반환해요.
  • String getSpecificationTitle() — 이 패키지가 구현하는 스펙의 제목을 반환해요 (알려져 있지 않으면 null).
  • String getSpecificationVersion() — 이 패키지의 스펙 버전을 반환해요.
  • String getSpecificationVendor() — 스펙의 벤더를 반환해요.
  • String getImplementationTitle() — 이 패키지 구현의 제목을 반환해요.
  • String getImplementationVersion() — 이 패키지 구현의 버전을 반환해요.
  • String getImplementationVendor() — 이 패키지 구현의 벤더를 반환해요.
  • boolean isCompatibleWith(String desired) — 이 패키지의 스펙 버전이 원하는 버전과 호환되는지 검사해요.
  • boolean isSealed() — 이 패키지가 sealed인지 여부를 반환해요.
  • <A extends Annotation> A getAnnotation(Class<A> annotationClass) — 주어진 타입의 애너테이션을 이 패키지에서 반환해요.

더 알아보기 (Learn more)