A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.tutorialspoint.com/java/util/java_util_serviceloader.htm below:

Java ServiceLoader Class

Java ServiceLoader Class Introduction

The Java ServiceLoader class is a simple service-provider loading facility.Following are the important points about ServiceLoader −

Class declaration

Following is the declaration for java.util.ServiceLoader class −

public final class ServiceLoader<S>
   extends Object
   implements Iterable<S>
Parameters

Following is the parameter for java.util.ServiceLoader class −

S − This is the type of service to be loaded by this loader.

Class methods Methods inherited

This class inherits methods from the following classes −

Getting a ServiceLoader implementation Instance Example

In order the service to be registered, we need a META-INF/services folder in our classpath. In this particular folder, we need a text file with the name of the interface we implementing containing a single line listing the concrete class name of the implementation. In our case the name of the file is com.tutorialspoint.ServiceProvider and contains this line −

com.tutorialspoint.ServiceImplementation

Our service code is the following −

package com.tutorialspoint;

public class ServiceImplementation extends ServiceProvider {
   public String getMessage() {
      return "Hello World";
   }
}

The following code loads the service that is registered and uses it to get the message from the service. We've created a method getDefault() which returns a ServiceProvider. This method gets a serviceLoader object using ServiceLoader.load(). Using serviceLoader.findFirst() method, we've retrieved an Optional object of ServiceProvider and return ServiceProvider object using Optional.get() method. Then using getDefault() we've retrieved the serviceProvider and printed the message using this object.

package com.tutorialspoint;

import java.util.Optional;
import java.util.ServiceLoader;

public abstract class ServiceProvider {
   public static ServiceProvider getDefault() {

      // load our plugin
      ServiceLoader<ServiceProvider> serviceLoader =
      ServiceLoader.load(ServiceProvider.class);

      Optional<ServiceProvider> serviceProvider = serviceLoader.findFirst();

      return serviceProvider.get();
   }

   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());
   }
}
Output

Let us compile and run the above program, this will produce the following result −

Hello World

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4