(42):慎用可变参数

本文介绍了可变参数的概念及其在方法定义中的使用方式。通过示例解释了如何利用可变参数来实现灵活的参数传递,并讨论了性能考量下可变参数使用的最佳实践。

可变参数指的是可以接受一个或多个指定类型的参数

static int sum(int... args) {
    int sum=0;
    for(int arg : args)
        sum += arg;
    return sum;
}
上面就是可变参数的实例,可以是sum()=0也可以是sum(1,2,3)=6。

可变参数的机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法。
在重视性能的情况下,使用可变参数机制要小心,因为可变参数方法的每次调用都会导致进行一次数组分配和初始化,有一种折中的解决方案,假设确定某个方法大部分调用会有3个或者更少的参数,就声明该方法的5个重载,每个重载带有0至3个普通参数,当参数数目超过3个时,使用可变参数方法。

public void foo() {}
public void foo() {int a1}
public void foo() {int a1, int a2}
public void foo() {int a1, int a2, int a3}
public void foo() {int a1, int a2, int a3, int... rest}

简而言之,但我们需要定义参数数目不定的方法时,可变参数是个很好的办法。但这种方式不应该被滥用,使用不当会产生混乱的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值