Java Language
모듈
수색…
통사론
- java.xml이 필요합니다.
- public java.xml이 필요합니다. # 사용을 위해 모듈을 부양 가족에게 공개합니다.
- 수출 com.example.foo; # 종속물은이 패키지에서 공용 유형을 사용할 수 있습니다.
- com.example.foo.impl을 com.example.bar로 내 보냅니다. # 모듈에 대한 사용을 제한한다.
비고
모듈 사용은 장려되지만 필수는 아닙니다. 기존 코드가 Java 9에서 계속 작동 할 수 있습니다. 또한 모듈 식 코드로 점진적으로 전환 할 수 있습니다.
모듈화 되지 않은 코드는 컴파일 될 때 이름없는 모듈에 저장 됩니다. 이것은 다른 모든 모듈의 유형을 사용할 수 있지만 exports
선언이있는 패키지에서만 유형을 사용할 수있는 특수 모듈입니다.
이름 이 없는 모듈의 모든 패키지는 자동으로 내보내집니다.
키워드 (예 : module
등)는 모듈 선언 내에서 사용이 제한되지만 다른 곳에서 계속 식별자로 사용할 수 있습니다.
기본 모듈 정의하기
모듈은 module-info.java
라는 파일에 정의되며 모듈 디스크립터로 명명됩니다. 그것은 소스 코드 루트에 위치해야합니다 :
|-- module-info.java
|-- com
|-- example
|-- foo
|-- Foo.java
|-- bar
|-- Bar.java
다음은 간단한 모듈 설명 자입니다.
module com.example {
requires java.httpclient;
exports com.example.foo;
}
모듈 이름은 고유해야하며이를 위해 패키지에서 사용하는 것과 동일한 Reverse-DNS 명명 표기법 을 사용하는 것이 좋습니다.
Java의 기본 클래스를 포함하는 모듈 인 java.base
는 모든 모듈에서 암시 적으로 볼 수 있으므로 포함 할 필요가 없습니다.
이 requires
선언 모듈의 예에서, 우리가 다른 모듈을 사용할 수 있습니다 java.httpclient
가져옵니다.
모듈은 또한 패키지를 지정할 수 있습니다 exports
때문에 다른 모듈이 볼 수 있습니다.
exports
절에서 선언 된 패키지 com.example.foo
는 다른 모듈에서 볼 수 있습니다. com.example.foo
하위 패키지는 내보낼 수 없으며 자체 export
선언이 필요합니다.
반대로 exports
절에 나열되지 않은 com.example.bar
는 다른 모듈에서 볼 수 없습니다.