【发布时间】:2013-03-03 21:14:50
【问题描述】:
我一直在寻找答案,但无济于事。我的问题是为什么不可能对泛型感到沮丧。我有一个名为 Job 的类并扩展了一个名为 Model 的类
Job extends Model
现在我从生成模型列表的可重用代码中获取作业集合
// error: Cannot cast from List<Model> to List<Job>
List<Job> jobs = (List<Job>) jobMapper.fetchAll();
其中 jobMapper.fetchAll() 返回一个 List,其中每个模型都是一个 Job 对象。
我认为这会起作用,因为我可以做到:
EditText mUsername = (EditText) findViewById(R.id.editUserName);
这是一个简单的向下转换。
【问题讨论】:
-
Job 是 Model 的子类,Job[] 是 Model[] 的子类,但 List
不是 List 的子类。 -
@JermaineXu:这里的“子类型”比“子类”更正确。因为
List<Job>并不是真正的类,而是一种类型。 (你可以争辩Job[]也不是一个类)。 -
没错,感谢您的指正。 @JoachimSauer
标签: java generics collections downcast