当我尝试将Object转换为List <object> </object>时发出警告

时间:2014-03-26 11:52:58

标签: java

我有一个List的对象 我的演员是:

List<Object> list = (List<Object>)o;

这似乎是正确的,但它给了我:

  

类型安全:取消选中从对象转换为    ArrayList的

仍然......演员对我来说似乎是正确的。

我不想使用@suppressWarning,我想解决它。

3 个答案:

答案 0 :(得分:2)

代码无法编译是有充分理由的。考虑:

List<Integer> o = new ArrayList<Integer>();
List<Object> list = (List<Object>)o; //Or alternatively (List)o, which does compile, but with a warning
list.add("Hello");
Integer v = o.get(0); //ClassCastException!

警告/错误表示编译器无法防止意外的ClassCastException。

答案 1 :(得分:1)

你无法摆脱这个警告。从Object转换为通用对象始终会打印此警告(类型系统无法保证此步骤绝对正确,因为Object几乎可以是所有内容。

答案 2 :(得分:0)

您需要向我们提供更多代码,以确定是否有可能避免使用正确使用泛型进行投射。

至于你现在的问题,你无法避免这个编译器警告。这只是因为我们不知道o对象的实际类型是什么。它可以是ArrayList,但也可以是BigPapaSmurf