首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式对初始化的类进行类型转换

如何以编程方式对初始化的类进行类型转换
EN

Stack Overflow用户
提问于 2013-04-03 01:42:02
回答 2查看 394关注 0票数 0

我正在尝试以编程方式初始化一个类,并将其添加到列表中。我不知道如何输入workflowClass才能让它extends BaseWorkflow,这样list才能接受它。目前,当它需要? extends BaseWorkflow时,它会提示我不能添加Object

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 01:44:26

您将无法向List<? extends BaseWorkflow>添加任何内容。该列表应声明为List<BaseWorkflow>。实际上,List<? extends BaseWorkflow>的意思是:是或扩展了BaseWorkflow的一些未知类型的列表。由于该类型是未知的,因此向该列表添加任何内容(除null以外)都会破坏其类型安全性。

然后一个简单的造型就可以了:

代码语言:javascript
复制
workflowList.add((BaseWorkflow) workflowClass);
票数 3
EN

Stack Overflow用户

发布于 2013-04-03 01:45:15

尝试显式强制转换对象:

代码语言:javascript
复制
workflowList.add((BaseWorkflow) workflowClass)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15770661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档