首页  >  文章  >  Java  >  项目 明智地使用超载

项目 明智地使用超载

王林
王林原创
2024-09-06 06:00:02701浏览

过载问题:

  • 方法重载(如 CollectionClassifier 程序的示例)可能会导致意外行为,因为要根据参数类型选择要调用的方法是在编译时发生的,而不是在运行时发生的。

过载与覆盖:

  • 重载是在编译时选择方法,而重写是在运行时根据类型选择正确的方法,这使得行为更加可预测。

避免混乱的开销:

  • 当不清楚将为一组参数调用哪个方法时,重载会让程序员感到困惑。这在公共 API 中尤其成问题。

推荐:

  • 避免导出具有相同数量参数的两个重载。
  • 以不同的方式命名方法而不是重载(如 writeInt 和 writeBoolean)。
  • 使用可变参数时,避免重载。

泛型和自动装箱案例:

  • Java 中泛型和自动装箱的引入导致了重载问题,如 List.remove 的示例所示,由于存在多个重载,它的行为可能会令人困惑。

函数式接口和 lambda:

  • Java 8 中添加的 lambda 通过重载采用函数式接口的方法而增加了混乱的风险,特别是当这些接口不是“根本不同”时。

实用解决方案:

  • 使用instanceof进行显式测试可以避免与重载相关的问题。
  • 使用完全不同的参数(无法相互转换的类型)进行重载可以避免混淆。
  • 构造函数和重载:虽然构造函数总是重载,但使用静态工厂可以避免这种复杂性。

合理的例外:

  • 在某些情况下,例如改编旧类,可能需要重载,但必须谨慎使用,确保使用相同参数调用时重载方法的行为相同。

结论:

  • 应谨慎使用重载。虽然技术上可行,但通常最好以不同的方式命名方法或避免混淆重载,以确保代码更清晰、更可预测。

书中的示例:

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

以上是项目 明智地使用超载的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn