1700438505
编写高质量代码:改善Java程序的151个建议 建议4:避免带有变长参数的方法重载
1700438506
1700438507
在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection类型或其子类类型,或者是数组类型,这种方法的缺点就是需要对空参数进行判断和筛选,比如实参为null值和长度为0的Collection或数组。而Java 5引入变长参数(varags)就是为了更好地提高方法的复用性,让方法的调用者可以“随心所欲”地传递实参数量,当然变长参数也是要遵循一定规则的,比如变长参数必须是方法中的最后一个参数;一个方法不能定义多个变长参数等,这些基本规则需要牢记,但是即使记住了这些规则,仍然有可能出现错误,我们来看如下代码:
1700438508
1700438509
public class Client{
1700438510
1700438511
//简单折扣计算
1700438512
1700438513
public void calPrice(int price, int discount){
1700438514
1700438515
float knockdownPrice=price*discount/100.0F;
1700438516
1700438517
System.out.println(“简单折扣后的价格是:”+formateCurrency(knockdownPrice));
1700438518
1700438519
}
1700438520
1700438521
//复杂多折扣计算
1700438522
1700438523
public void calPrice(int price, int……discounts){
1700438524
1700438525
float knockdownPrice=price;
1700438526
1700438527
for(int discount:discounts){
1700438528
1700438529
knockdownPrice=knockdownPrice*discount/100;
1700438530
1700438531
}
1700438532
1700438533
System.out.println(“复杂折扣后的价格是:”+formateCurrency(knockdownPrice));
1700438534
1700438535
}
1700438536
1700438537
//格式化成本的货币形式
1700438538
1700438539
private String formateCurrency(float price){
1700438540
1700438541
return NumberFormat.getCurrencyInstance().format(price/100);
1700438542
1700438543
}
1700438544
1700438545
public static void main(String[]args){
1700438546
1700438547
Client client=new Client();
1700438548
1700438549
//499元的货物,打75折
1700438550
1700438551
client.calPrice(49900,75);
1700438552
1700438553
}
[
上一页 ]
[ :1.700438504e+09 ]
[
下一页 ]