Java方法重载实现三角形周长计算时int与double全参数组合是否冗余
针对三角形周长计算重载方法的问题解答
你的判断完全正确:在实际生产开发中,示例里中间6个int和double混合参数的重载方法确实属于冗余代码。仅保留全int参数、全double参数两个方法就足够覆盖所有调用场景,甚至直接只保留全double参数的一个方法也完全可以,因为int类型可以安全地自动向上转型为double,不会出现精度丢失或者参数不匹配的问题。
老师写出这组重载的核心原因只有一个:
- 纯粹的教学演示需求
这是非常典型的方法重载规则演示样例,目的是直观展示方法重载的核心判定规则:只要方法名相同,参数列表的类型、数量、顺序任意一项不同,就构成合法的重载,和返回值类型无关。
同时这组代码也可以用来演示重载方法的调用匹配优先级:JVM调用重载方法时会优先匹配参数类型完全一致的方法,只有找不到完全匹配的方法时,才会尝试通过参数自动类型提升来匹配对应的重载。比如传参为(double, int, int)时,会优先调用参数类型完全匹配的重载,而不是直接匹配三个double参数的方法。
至于所谓“避免类型转换性能损耗”的说法完全站不住脚,基础类型int转double的开销几乎可以忽略,完全不值得为了这点可无视的性能提升多写6份逻辑完全重复的代码。实际开发中没人会这么写,这种写法只会无谓增加代码的维护成本,出现逻辑修改时还要同步修改8个方法,完全是冗余设计。
内容的提问来源于stack exchange,提问作者Punish_me_er
相关产品推荐
相关产品推荐

