首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在某些Java泛型类型转换中类型安全警告的含义是什么?

在某些Java泛型类型转换中类型安全警告的含义是什么?
EN

Stack Overflow用户
提问于 2008-08-02 08:58:28
回答 1查看 9.7K关注 0票数 80

Java警告的含义是什么

类型安全:从对象到列表的强制转换实际上是针对擦除的类型列表进行检查

当我尝试将对象强制转换为具有泛型信息的类型时,会收到此警告,如以下代码所示:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-08-02 08:58:48

之所以出现这个警告,是因为Java实际上并没有在运行时将类型信息存储在使用泛型的对象中。因此,如果object实际上是一个List<String>,那么在运行时将没有ClassCastException,除非从列表中访问了一个与变量中定义的泛型类型不匹配的项。

如果使用此不正确的泛型类型信息将项添加到列表中,这可能会导致更复杂的情况。任何代码仍然持有对列表的引用,但具有正确的泛型类型信息,现在将具有不一致的列表。

要删除警告,请尝试:

List<?> list = (List<?>) object;

但是,请注意,您将无法使用某些方法,例如add,因为编译器不知道您是否试图添加类型不正确的对象。

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档