Java警告的含义是什么
类型安全:从对象到列表的强制转换实际上是针对擦除的类型列表进行检查
当我尝试将对象强制转换为具有泛型信息的类型时,会收到此警告,如以下代码所示:
Object object = getMyList();
List<Integer> list = (List<Integer>) object;
发布于 2008-08-02 08:58:48
之所以出现这个警告,是因为Java实际上并没有在运行时将类型信息存储在使用泛型的对象中。因此,如果object
实际上是一个List<String>
,那么在运行时将没有ClassCastException
,除非从列表中访问了一个与变量中定义的泛型类型不匹配的项。
如果使用此不正确的泛型类型信息将项添加到列表中,这可能会导致更复杂的情况。任何代码仍然持有对列表的引用,但具有正确的泛型类型信息,现在将具有不一致的列表。
要删除警告,请尝试:
List<?> list = (List<?>) object;
但是,请注意,您将无法使用某些方法,例如add,因为编译器不知道您是否试图添加类型不正确的对象。
https://stackoverflow.com/questions/382
复制相似问题