- Java.util Package Classes
- Java.util - Home
- Java.util - ArrayDeque
- Java.util - ArrayList
- Java.util - Arrays
- Java.util - BitSet
- Java.util - Calendar
- Java.util - Collections
- Java.util - Currency
- Java.util - Date
- Java.util - Dictionary
- Java.util - EnumMap
- Java.util - EnumSet
- Java.util - Formatter
- Java.util - GregorianCalendar
- Java.util - HashMap
- Java.util - HashSet
- Java.util - Hashtable
- Java.util - IdentityHashMap
- Java.util - LinkedHashMap
- Java.util - LinkedHashSet
- Java.util - LinkedList
- Java.util - ListResourceBundle
- Java.util - Locale
- Java.util - Observable
- Java.util - PriorityQueue
- Java.util - Properties
- Java.util - PropertyPermission
- Java.util - PropertyResourceBundle
- Java.util - Random
- Java.util - ResourceBundle
- Java.util - ResourceBundle.Control
- Java.util - Scanner
- Java.util - ServiceLoader
- Java.util - SimpleTimeZone
- Java.util - Stack
- Java.util - StringTokenizer
- Java.util - Timer
- Java.util - TimerTask
- Java.util - TimeZone
- Java.util - TreeMap
- Java.util - TreeSet
- Java.util - UUID
- Java.util - Vector
- Java.util - WeakHashMap
- Java.util Package Extras
- Java.util - Interfaces
- Java.util - Exceptions
- Java.util - Enumerations
- Java.util Useful Resources
- Java.util - Useful Resources
- Java.util - Discussion
Java.util.ServiceLoader.load() Method
Description
The java.util.ServiceLoader.load(Class<S> service,ClassLoader loader) method Creates a new service loader for the given service type and class loader.
Declaration
Following is the declaration for java.util.ServiceLoader.load() method
public static <S> ServiceLoader<S> load(Class<S> service,ClassLoader loader)
Parameters
service − The interface or abstract class representing the service
loader − The class loader to be used to load provider-configuration files and provider classes, or null if the system class loader (or, failing that, the bootstrap class loader) is to be used
Return Value
This method returns a new service loader
Exception
NA
Example
In order the service to be registered, we need a META-INF/service 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 −
package com.tutorialspoint; import java.util.ServiceLoader; public abstract class ServiceProvider { public static ServiceProvider getDefault() { // load our plugin with the default system class loader ServiceLoader<ServiceProvider> serviceLoader = ServiceLoader.load(ServiceProvider.class, ClassLoader.getSystemClassLoader()); //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()); } }
Let us compile and run the above program, this will produce the following result −
Hello World