ServiceLoader in the JDK

Jesse Glick jesse.glick at oracle.com
Thu May 24 07:28:47 PDT 2012


On 05/24/2012 08:40 AM, Jesse Glick wrote:
> maybe add to Class:
>
> public <S> Iterable<S> services(Class<S> service) {
>   Module m = getModule();
>   return m != null ? m.somehowLoadProviders(service) : ServiceLoader.load(service);
> }

or better, add to ClassLoader:

protected <S> Iterable<S> services(Class<S> service, Class<?> reference) {
   return ServiceLoader.load(service); // or .load(service, this)? TBD
}

with an override in ModuleClassLoader, and to Class:

public final <S> Iterable<S> services(Class<S> service) {
   return getClassLoader().services(service, this);
}

offering better flexibility for module systems generally.



More information about the jigsaw-dev mailing list