@SuppressWarnings("unchecked")
            @Override
            public Class<S> next() {
                if (this.knownProviders.hasNext()) {
                    return (Class<S>) this.knownProviders.next().getValue().getClass();
                }
                return JRaftServiceLoader.this.lookupIterator.next();
            }
A simple service-provider loading facility (SPI).

@author jiachun.fjc
jraft-core/src/main/java/com/alipay/sofa/jraft/util/JRaftServiceLoader.java