java - 如何将 List<Object> 转换为 List<MyClass>

标签 java generics casting

这不会编译,任何建议表示赞赏。

 ...
  List<Object> list = getList();
  return (List<Customer>) list;

编译器说:无法转换 List<Object>List<Customer>

最佳答案

您总是可以通过先将任何对象向上转换为 Object 来将其转换为任何类型。在你的情况下:

(List<Customer>)(Object)list; 

您必须确保在运行时列表只包含客户对象。

批评者说这样的转换表明你的代码有问题;你应该能够调整你的类型声明来避免它。但是Java泛型太复杂了,并不完美。有时您只是不知道是否有一个很好的解决方案可以满足编译器的要求,即使您非常了解运行时类型并且您知道您正在尝试做的事情是安全的。这种情况下,只要根据需要进行粗铸,就可以下类回家了。

关于java - 如何将 List<Object> 转换为 List<MyClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917844/

相关文章:

c# - 故障排除 : Why doesn't type inference fail here?

sql - SQL Server 2008 中舍入时的奇怪行为

java - JPA 多对多查询

java - 将一个字节分解为 8 位最简单?

java - 如何在java中对包含两个以上异构对象的List进行排序?

c++ - boost::numeric_cast 功能无一异常(exception)

java - 为什么以下代码会自动装箱为错误的类型并进行编译?

java - 使用 LRU 缓存时避免字符串分配

java - EMF 通用列表

generics - F#:函数参数默认为类中的 obj