我有一个List的对象 我的演员是:
List<Object> list = (List<Object>)o;
这似乎是正确的,但它给了我:
类型安全:取消选中从对象转换为 ArrayList的
仍然......演员对我来说似乎是正确的。
我不想使用@suppressWarning,我想解决它。
答案 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
。