使用asSubclass來(lái)確定是否某個(gè)對(duì)象的子類
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);
}
}
通過(guò)newInstance來(lái)獲取實(shí)例
decisionMaker = ResaUtils.newInstanceThrow((String) conf.getOrDefault(DECISION_MAKER_CLASS,
DefaultDecisionMaker.class.getName()), DecisionMaker.class);
通過(guò)這種方式來(lái)動(dòng)態(tài)地加載類煎娇,方便一個(gè)類有許多子類時(shí)可以選擇調(diào)用具體某個(gè)類