我正在尝试以编程方式初始化一个类,并将其添加到列表中。我不知道如何输入workflowClass才能让它extends BaseWorkflow,这样list才能接受它。目前,当它需要? extends BaseWorkflow时,它会提示我不能添加Object。
private static List<? extends BaseWorkflow> workflowList = new ArrayList<BaseWorkflow>();
/**
* Initialize the production line
*/
public static void init() {
//load active workflows into memory
WorkflowService workflowService = (WorkflowService) ApplicationContextProvider.getApplicationContext().getBean("workflowService");
for (Workflow workflow: workflowService.findActive()) {
try {
Class<?> clazz = Class.forName(workflow.getClassName());
Object workflowClass = clazz.newInstance();
workflowList.add(workflowClass);发布于 2013-04-03 01:44:26
您将无法向List<? extends BaseWorkflow>添加任何内容。该列表应声明为List<BaseWorkflow>。实际上,List<? extends BaseWorkflow>的意思是:是或扩展了BaseWorkflow的一些未知类型的列表。由于该类型是未知的,因此向该列表添加任何内容(除null以外)都会破坏其类型安全性。
然后一个简单的造型就可以了:
workflowList.add((BaseWorkflow) workflowClass);发布于 2013-04-03 01:45:15
尝试显式强制转换对象:
workflowList.add((BaseWorkflow) workflowClass)https://stackoverflow.com/questions/15770661
复制相似问题