当前位置:  开发笔记 > 编程语言 > 正文

两种类型的方式之间的区别铸造List to List <T>

如何解决《两种类型的方式之间的区别铸造ListtoList<T>》经验,为你挑选了1个好方法。

根据Java文档,泛型仅限于编译时.一旦代码编译,它们就会消失,这称为Type Erasure.

现在,关于方法,方法1只是向列表添加强制转换而不检查其中存在的所有元素的类型.这意味着,如果List被转换为Cat类型,那么在运行时代码中的任何地方都可能会出现意外的ClasscastException,而它的结果是Dog.

方法2创建一个全新的列表,它遍历所有元素并尝试将每个元素转换为目标类型.意思是,如果无法将所有元素强制转换为目标类型,则会失败.

我会说方法2是安全的,因为它确保在添加演员表之前一切正常(即本地化风险).方法1可能允许将List(包含Cat,Dog,Dinosaur)转换为List ,然后您可能会遇到意外故障.

这个例子很好地解释了它.



1> Darshan Meht..:

根据Java文档,泛型仅限于编译时.一旦代码编译,它们就会消失,这称为Type Erasure.

现在,关于方法,方法1只是向列表添加强制转换而不检查其中存在的所有元素的类型.这意味着,如果List被转换为Cat类型,那么在运行时代码中的任何地方都可能会出现意外的ClasscastException,而它的结果是Dog.

方法2创建一个全新的列表,它遍历所有元素并尝试将每个元素转换为目标类型.意思是,如果无法将所有元素强制转换为目标类型,则会失败.

我会说方法2是安全的,因为它确保在添加演员表之前一切正常(即本地化风险).方法1可能允许将List(包含Cat,Dog,Dinosaur)转换为List ,然后您可能会遇到意外故障.

这个例子很好地解释了它.


比有保证的要强一点.方法2不安全,但确实将风险本地化.我想,那就像它一样好.
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有