微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

升级应用程序以在Java中使用泛型有哪些警告?

如何解决升级应用程序以在Java中使用泛型有哪些警告?

| 在使用泛型之前,我正在使用为Java 1.4编写的较旧的Java应用程序。从那时起,我们就完成了对Java 6的升级。 我们现在正在考虑进行更改,以在我们的集合中支持Generics,以期进行编译时类型安全检查,并保持开发人员的理智。 在执行此升级时,我们应注意哪些警告或陷阱?     

解决方法

         了解Java泛型的工作方式及其局限性。 使用具有良好重构支持的IDE。 慢慢并小心地做。 首先要做一些简单的事情,并且不要跳入创建复杂的泛型类等,直到您真正知道它们是必需的为止。 抵制诱惑以添加“ 0”使警告消失。 这里没有什么特别深刻的...     ,        升级中最重要的部分,恕我直言,是要确保从事此工作的开发人员对泛型有扎实的了解,尤其是在将Collections传递给函数并从函数返回它们的过程中,例如
List<Animal> <> List<Tiger>
等。能够放入泛型,即使您使用的是泛型Object或?占位符。 使转换顺利/不平稳的另一件事是代码相关的,即您的集合包含单个类型,没有混合的对象会强制执行?或Object \'catch-alls。\'。这可能相当普遍,尤其是对于Maps。 如果使用任何基础库,Hibernate等,则在基础库不支持泛型的情况下会遇到限制。在这种情况下,您将不得不泄漏库代码,或者包装对象(不推荐)。 更改有意义的部分,留下不重要的部分,并分阶段进行,以便在遇到问题时始终可以回滚。     ,        斯蒂芬死定了,但我会补充一些技巧。 1)由于泛型仅是编译时,因此它们在诸如反射和将对象存储在会话中的几个地方都没有用(如果这是一个Web项目)。我不知道有什么干净的方法可以解决这个问题。我建议仅声明从中得到的所有内容为
<?>
,并进行类型检查。 2)这是过去烧死我的东西。在方法定义中使用
List<? extends Shape>
而不是
List<Shape>
。如果您有一个
Circle
类型,它是
Shape
的子代,则
List<Circle>
不能传递给
List<Shape>
,但可以传递给
List<? extends Shape>
。这似乎很小,但对我来说却突然出现,并且需要对我认为已经完成的课程进行许多其他更改。 3)我认为您永远不需要抑制泛型警告,因为您总是可以将“ 10”变成“ 11”并摆脱它们。但是,我建议您不要这样做,除非代码的那一部分不能使用泛型(请参阅我的第一点)。最好有计划要修复的警告,然后是有计划要改进的错误修复,因为您可能永远也不会加以改进,并且每次查看项目时,警告都会使您面目全非。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。