使用asSubclass来确定是否某个对象的子类
public static <T> T newInstanceThrow(String className, Class<? extends T> castClass) {
try {
return Class.forName(className).asSubclass(castClass).newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
通过newInstance来获取实例
decisionMaker = ResaUtils.newInstanceThrow((String) conf.getOrDefault(DECISION_MAKER_CLASS,
DefaultDecisionMaker.class.getName()), DecisionMaker.class);
通过这种方式来动态地加载类,方便一个类有许多子类时可以选择调用具体某个类