Java 有一個來自java.util 套件的ServiceLoader 類,可以幫助定位 #服務透過在類別路徑中搜索,在運行時提供提供者。對於模組中定義的服務提供者,我們可以查看範例應用程式來聲明帶有服務的模組及其工作原理。
例如,我們有一個「test.app我們需要使用Logger 模組,可以藉助我们需要使用 Logger 模块,可以借助 LoggerFinder 服務從System.getLogger() 工廠方法檢索該Logger。
<strong>module com.tutorialspoint.test.app { requires java.logging; exports com.tutorialspoint.platformlogging.app; uses java.lang.System.LoggerFinder; }</strong>
下面是test.app.MainApp 類別:
package com.tutorialspoint.platformlogging.app; public class MainApp { private static <strong>Logger </strong>LOGGER = <strong>System.getLogger()</strong>; public static void main(String args[]) { LOGGER.log(); } }#這是「
測試內的LoggerFinder實作」 .logging」模組:
package com.tutorialspoint.platformlogging.logger; public class MyLoggerFinder extends LoggerFinder { <strong>@Override</strong> public Logger getLogger(String name, Module module) { // return a Logger depending on name/module } }在「
test.logging」模組聲明中,我們可以透過「提供 – 」提供 LoggerFinder 服務的實作>」條款。
<strong>module com.tutorialspoint.test.logging { provides java.lang.System.LoggerFinder with com.tutorialspoint.platformlogging.logger.MyLoggerFinder; }</strong>
以上是在Java 9中,何時使用ServiceLoader類別在模組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!