Java.util.ServiceLoader.loadInstalled() Java.util.ServiceLoader.load() Java.util.ServiceLoader.reload() 描述 所述java.util.ServiceLoader.loadInstalled(Class service)方法创建针对给定服务类型的新服务加载器,使用扩展类加载器。此方法仅在需要安装的提供程序时使用。生成的服务只会查找并加载已安装到当前Java虚拟机中的提供程序; 应用程序类路径上的提供程序将被忽略。 声明 以下是java.util.ServiceLoader.loadInstalled()方法的声明 public static <S> ServiceLoader<S> loadInstalled(Class<S> service) 参数 service - 表示服务的接口或抽象类 返回值 此方法返回一个新的服务加载器 异常 NA 实例 此示例要求将服务安装在Java虚拟机中 我们的服务代码如下 package com.tutorialspoint; public class ServiceImplementation extends ServiceProvider { public String getMessage() { return "Hello World"; } } 以下代码加载已注册的服务并使用它来从服务获取消息 package com.tutorialspoint; import java.util.ServiceLoader; public abstract class ServiceProvider { public static ServiceProvider getDefault() { // load our plugin provided it is installed in our Java Virtual Machine ServiceLoader<ServiceProvider> serviceLoader = ServiceLoader.loadInstalled(ServiceProvider.class); //checking if load was successful for (ServiceProvider provider : serviceLoader) { return provider; } throw new Error("Something is wrong with registering the addon"); } public abstract String getMessage(); public static void main(String[] ignored) { // create a new provider and call getMessage() ServiceProvider provider = ServiceProvider.getDefault(); System.out.println(provider.getMessage()); } } 让我们编译并运行上面的程序,这将产生以下结果 Hello World Java.util.ServiceLoader.load() Java.util.ServiceLoader.reload()