我不斷收到錯誤:java.lang.NoSuchMethodException: com.production.workflow.MyWorkflow.<init>(com.production.model.entity.WorkflowEntity)
無法實例子類參數
我有期待WorkflowEntity
所以我不能弄清楚爲什麼它說NoSuchMethod
構造。是否有構造函數繼承阻止這種實例化?
我實例化廠:
public static Workflow factory(WorkflowEntity workflowEntity) {
try {
Class<?> clazz = Class.forName(workflowEntity.getClassName()).asSubclass(Workflow.class);
Constructor c = clazz.getConstructor(WorkflowEntity.class);
Object workflowClass = c.newInstance(clazz);
return (Workflow) workflowClass;
} catch (Exception e) {
e.printStackTrace();
logger.severe("Unable to instantiate "+workflowEntity.getClassName()+" class: " + e.getLocalizedMessage());
}
return null;
}
工作流程類:
public class MyWorkflow extends Workflow {
//no constructors
擴展類:
abstract public class Workflow {
protected static final Logger logger = Logger.getLogger(Workflow.class.getName());
private WorkflowEntity entity;
protected WorkflowProcess workflowProcess;
@Autowired
private WorkflowProcessService workflowProcessService;
/* Don't use this one */
public Workflow() { }
/* Default constructor */
public Workflow (WorkflowEntity entity) {
this.entity = entity;
//get first workflow process
//@todo this should factor in rule, for multiple starting points
for (WorkflowProcessEntity workflowProcessEntity : entity.getWorkflowProcesses()) {
workflowProcess = WorkflowProcess.factory(workflowProcessEntity);
break;
}
}
是否有優勢,這種方法在工廠?圖書館中通用的Java實踐更標準嗎? – Webnet 2013-04-09 19:11:27
我的首選是在構造函數參數數量可變時使用構建器。Factory看起來不錯,但就你而言,我會將MyWorkFlow.class作爲工廠方法參數傳遞,而不是將MyWorkFlow類名稱用作WorkFlowEntity參數。 – DwB 2013-04-09 20:03:59