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

2022-08-31 08:29:27

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

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

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


答案 1

您始终可以将任何对象转换为任何类型,方法是先将其上抛到对象。在您的情况下:

(List<Customer>)(Object)list; 

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

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


答案 2

根据您的其他代码,最佳答案可能会有所不同。尝试:

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

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

但请记住,不建议进行这种未经检查的演员表。


推荐