如何将 List<Object> 转换为 List<MyClass>
这不会编译,任何建议赞赏。
...
List<Object> list = getList();
return (List<Customer>) list;
编译器说:无法转换为List<Object>
List<Customer>
这不会编译,任何建议赞赏。
...
List<Object> list = getList();
return (List<Customer>) list;
编译器说:无法转换为List<Object>
List<Customer>
您始终可以将任何对象转换为任何类型,方法是先将其上抛到对象。在您的情况下:
(List<Customer>)(Object)list;
您必须确保在运行时,列表只包含 Customer 对象。
批评者说,这样的转换表明你的代码有问题。您应该能够调整类型声明以避免这种情况。但是Java泛型太复杂了,而且并不完美。有时你只是不知道是否有一个漂亮的解决方案来满足编译器,即使你非常了解运行时类型,并且你知道你试图做的事情是安全的。在这种情况下,只需根据需要进行粗铸,这样您就可以将工作留在家里。
根据您的其他代码,最佳答案可能会有所不同。尝试:
List<? extends Object> list = getList();
return (List<Customer>) list;
或
List list = getList();
return (List<Customer>) list;
但请记住,不建议进行这种未经检查的演员表。