JDK Modularization – 18

Q001

NO.10 Which two describe reasons to modularize the JDK? (Choose two.)
A. easier to understand the Java language
B. improves security and maintainability
C. easier to expose implementation details
D. improves application robustness
E. easier to build a custom runtime linking application modules and JDK modules

Ans : BD

注意,E 也是正確的,但因題目說選二個,所以 BD 為最佳解

robustness[roˋbʌstnɪs]強健

Q002

NO.8 There is a copyServiceAPI that has the org.copyservice.spi.Copy interface. To
use this service in a module, which module-info.java would be correct?
A)
module CopyConsumer {
    requires CopyServiceAPI;
    uses org.copyservice.spi.Copy;
}
B)
module CopyConsumer {
    requires transitive org.copyservice.spi.Copy;
}
C)
module CopyConsumer {
    requires org.copyservice.spi.Copy;
}
D)
module CopyConsumer {
    uses CopyServiceAPI;
}
A. Option A
B. Option B
C. Option C
D. Option D

Answer: A

題目重點:
有一個 copyServiceAPI 模組,裡面有 org.copyservice.spi.Copy 介面。
問:如果要在 CopyConsumer 模組中使用這個 service,哪個 module-info.java 正確?

模組與服務的正確用法

在 Java 9+ 模組系統(JPMS):

  • 提供服務的一方(provider module)在 module-info.java 宣告:

    provides org.copyservice.spi.Copy with SomeCopyImpl;
  • 使用服務的一方(consumer module)需要:

    1. requires 提供服務的 API 模組(這樣才能用介面)。

    2. uses 指定服務介面(這樣 ServiceLoader 才能找到)。

例如:

module CopyConsumer {
    requires CopyServiceAPI;
    uses org.copyservice.spi.Copy;
}

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *