
com.alibaba.qlexpress4.DefaultClassSupplier Maven / Gradle / Ivy
package com.alibaba.qlexpress4;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
/**
* Author: DQinYuan
*/
public class DefaultClassSupplier implements ClassSupplier {
private static final DefaultClassSupplier INSTANCE = new DefaultClassSupplier();
public static DefaultClassSupplier getInstance() {
return INSTANCE;
}
private final Map>> cache = new ConcurrentHashMap<>();
/**
* @param clsQualifiedName qualified name of class
* @return loaded class
*/
@Override
public Class> loadCls(String clsQualifiedName) {
Optional> clsOp = cache.computeIfAbsent(clsQualifiedName, this::loadClsInner);
return clsOp.orElse(null);
}
private Optional> loadClsInner(String clsQualifiedName) {
try {
Class> aClass = Class.forName(clsQualifiedName);
return Optional.of(aClass);
} catch (ClassNotFoundException | NoClassDefFoundError e) {
return Optional.empty();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy