java - 无法在 Java 中使用 List 类进行向下转换

标签 java generics collections downcast

<分区>

我一直在寻找这个问题的答案,但无济于事。我的问题是为什么不能使用泛型进行向下转换。我有一个名为 Job 的类并扩展了一个名为 Model 的类

Job extends Model

现在我从生成模型列表的可重用代码中获取作业集合

// error: Cannot cast from List<Model> to List<Job>
List<Job> jobs = (List<Job>) jobMapper.fetchAll();

其中 jobMapper.fetchAll() 返回一个列表,其中每个模型都是一个作业对象。

我认为这行得通,因为我可以:

EditText mUsername = (EditText) findViewById(R.id.editUserName);

这是一个简单的向下转型。

最佳答案

你不能这样做,因为 Java 不允许这样做。 Read this.你应该这样做:

 List<Job> jobs = (List<Job>) ((List<?>)jobMapper.fetchAll());

关于java - 无法在 Java 中使用 List 类进行向下转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427624/

相关文章:

java - java中遍历对象

java - WebServiceTemplate - 拦截器和回调之间的区别?

java - JTree 中对每个节点使用复选框进行部分选择

c# - 什么时候枚举集合(IEnumerable)

c# - 为什么会有 List<T>.BinarySearch(...)?

java - 什么是抑制异常?

java - 转换泛型 ArrayList

java - 如何将泛型对象作为泛型参数传递给 java 中的其他方法?

reactjs - react typescript : FunctionComponent with templated props

mysql - 将文本字段从 latin1_swedish 转换为 utf8?