for (double amount : amounts)
total += amount;
tax = total * rate;
System.out.println("Name: " + name + "\nTotal: " + total + "\ntax: " + tax);
}
可变参数也可应用在构造器中。例如:
public class Supper {
public Supper(char...characters) {
...
}
在子类中,可以覆盖这个构造器,如:
class SubClass extends Supper {
public SubClass(char...characters) {
...
}
}
但无法在子类中调用超类的这个构造器。
更多信息 可变参数可以用在构造器中,并可以覆盖。
如何应用Java的可变参数(3)
时间:2011-02-12
12.7.3 可变参数方法重载
可以对具有可变参数的方法重载。如下例子:
void someMethod(int count, double...prices) {
//语句体
...
}
void someMethod(double...prices) { //重载
//语句体
...
}
double someMethod(String...names) { //重载
//语句体
...
}
...
对方法someMethod()实行重载。对具有可变参数的方法重载遵循一般方法重载原则。
如下程序应用枚举和可变参数,对在12.4.4讨论过的根据用户要求打印跑车信息的程序进一步修改,使之具有更强功能。首先,在程序中加入了如下两个用来处理跑车颜色和付款方式的枚举类型对象:
//完整程序存在本书配套资源目录Ch12名为VarargsApp.java
enum ColorType {
WHITE {String getDescription(){
return "有浅白、暗白、和亮白可选";
}
},
SILVER {String getDescription() {
return "有银白、银灰、纯银色可选";
}
},
BLACK {String getDescription() {
return "有深黑和浅黑可选";
}
};
abstract String getDescription();
}
enum PaymentType {
CASH("有10%特别优惠"),
CREDIT("接受所有信用卡"),
LOAN("贷款利息为.56%");
final private String payment;
private PaymentType(String payment) {
this. payment = payment;
}
public String getPayment() {
return payment;
}
}
如何应用Java的可变参数(4)
时间:2011-02-12
另外,在SportCar中,根据用户的选择,加入了对跑车类型、颜色,以及付款方式的处理方法,并且利用可变参数。例如:
class SportCar {
SportCarType type; //创建
ColorType color;
PaymentType payment;
public SportCar (String...choices) { //可变参数
type = null; //初始化
color = null;
payment = null;
processInfo(choices); //调用处理信息方法
}
private void processInfo(String[] choices) {
if (choices.length == 1) { //处理跑车类型
processType(choices[0]);
}
else if (choices.length == 2) { //处理跑车类型和颜色
processType(choices[0]);
processColor(choices[1]);
}
else if (choices.length == 3) { //处理跑车类型、颜色和付款方式
p
|