提示五十二:慎用重载

提示五十二:慎用重载。

  1. 重载调用哪个方法是在编译时做出的决定,重写方法是在运行时决定调用哪个方法,所以编译时的类型不会影响最终调用哪个方法。
  2. 使用重载机制比较安全而保守的策略是:永远不要导出两个具有相同参数数目的重载方法。如果方法使用可变参数,保守的策略是不要重载它。
  3. 对于构造器,可以选择导出静态工厂。
  4. 对于每一种重载方法,至少有一个对应的参数在两个重载方法中具有根本不同的类型,就不会产生迷惑。
  5. 自动装箱可能导致调用错重载方法。
  6. 应该让更具体化的重载方法把调用转发给更一般化的重载方法。

我平时有时会使用重载,不过一般都是把更具体的重载方法转发给更一般的重载方法。但有时也会因为想不到什么更好的名字而使用重载,不过这种时候一般只有一两个参数而且类型都不一样。不过这次学到了可以参考write和writeInt,把类型放进方法名也可以避免这样的重载。平时在使用各种API的时候也发现,尽量不要出现参数数量相同的重载方法,避免使用者出错。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 下面这个程序的意图是好的,它试图根据一个集合是Set、List,还是其他的集合类性,来对它进行分类: 你可能期望这...
    taogan阅读 655评论 0 0
  • 问题的引入 classify方法被重载了,而要调用那个重载方法是在编译时做出决定的。 虽然for循环中的三次迭代的...
    每天学点编程阅读 489评论 0 0
  • 第52条 慎用重载 使用重载机制比较安全而保守的策略是:永远不要导出两个具有相同参数数目的重载方法。如果方法使用可...
    DZQANN阅读 259评论 0 0
  • class Wine {String name() { return "wine"; }}class Sparkl...
    呼天阔阅读 518评论 2 0
  • 下面这个程序的意图是好的,它试图根据一个集合是set,list,还是其他集合类型,来进行分类: 我们希望打出的是,...
    没走过的二丁目阅读 239评论 0 0

友情链接更多精彩内容