避免带有变长参数的方法重载

时间:2022-08-27 22:11:49

Java5引入了变长参数,是为了更好地提高方法的复用性,让方法的调用者可以传递多个实参数量,这些参数要遵循一些规则,比如变长参数必须是方法中的最后一个参数;一个方法不能定义多个变长参数等,这些基本规则需要牢记。

import java.text.NumberFormat;
public class Client{
public void calPrice(int price,int discount){
float knockdownPrice = price * discount /100.0F;
System.out.println("calPrice:"+formateCurrentcy(knockdownPrice));
}

public void calPrice(int price,int... discounts){
float knockdownPrice = price;
for(int discount:discounts){
knockdownPrice = knockdownPrice * discount / 100;
}
System.out.println("moreCalPrice:"+formateCurrentcy(knockdownPrice));
}
private String formateCurrentcy(float price){
return NumberFormat.getCurrencyInstance().format(price/100);
}
public static void main(String args[]){
Client client = new Client();
client.calPrice(49900,75);
}
}

程序运行结果是:¥374.25

程序有两个相同的calPrice()方法,但是他们的参数不同,所以他们形成了方法重载。java在编译的时候,会先根据实参的数量和类型来进行编译,也就是查到calPrice(int price , int discount)方法,而且确认他是否符合方法签名的条件。  
连个重载方法的第二个参数,一个是int的数据类型,一个数组对象。java编译器总是从最简单的数据类型开始编译,只要符合编译条件的即可通过