Module — 명명된 또는 명명되지 않은 런타임 모듈

Module — 명명된 또는 명명되지 않은 런타임 모듈

Module명명된(named) 또는 명명되지 않은(unnamed) 런타임 모듈을 나타내는 클래스예요. 자바 9의 모듈 시스템에서 각 모듈은 이 Module 객체로 표현돼요.

출처: Java API Reference

본문

명명된 모듈은 이름을 가지며, 모듈 그래프가 JVM에 정의되어 모듈 레이어를 만들 때 JVM이 생성해요. 명명되지 않은 모듈은 이름이 없어요. 각 ClassLoader에는 명명되지 않은 모듈이 하나씩 있는데, getUnnamedModule() 메서드로 얻어요. 명명된 모듈에 없는 모든 타입들은 그 정의 클래스 로더의 명명되지 않은 모듈의 멤버예요.

이 클래스의 메서드가 파라미터로 받거나 반환하는 패키지 이름은 JLS 6.5.3에 정의된 패키지의 완전한 이름(fully-qualified name)이에요. 예를 들어 "java.lang"처럼요. 별도로 명시되지 않는 한, null 인자를 넘기면 NullPointerException이 던져져요.

AnnotatedElement를 구현하는 final 클래스이고, 자바 9부터 제공돼요.

주요 메서드

  • Module addExports(String pn, Module other) — 호출자의 모듈이 이 모듈이면, 이 모듈이 주어진 패키지를 주어진 모듈에 내보내도록 갱신해요.
  • Module addOpens(String pn, Module other) — 이 모듈이 적어도 호출자 모듈에 패키지를 열었다면, 주어진 모듈에도 그 패키지를 열도록 갱신해요.
  • Module addReads(Module other) — 호출자의 모듈이 이 모듈이면, 이 모듈이 주어진 모듈을 읽도록 갱신해요.
  • Module addUses(Class<?> service) — 호출자의 모듈이 이 모듈이면, 이 모듈에 주어진 서비스 타입에 대한 서비스 의존성을 추가하도록 갱신해요.
  • boolean canRead(Module other) — 이 모듈이 주어진 모듈을 읽을 수 있는지 여부를 나타내요. (그 외 getName(), getDescriptor(), getLayer(), isExported(pn), isOpen(pn) 등 다수가 있어요.)

더 알아보기 (Learn more)