主题:【原创】Java 1.5新特点的一些体验 -- 老兵帅客
传统上处理变长参数的办法是将变化部分弄成数组,然后使用数组加数组长度的办法(例如C语言的Main函数)或者只使用数组(例如Java,因为Java的数组含有长度信息)来传入到方法中进行处理。但是这种方法的问题在于要求所有参数的类型是一致的,否则无法构成数组,除非都变成Object,但是这样做的成本有时候会比较高;而且这样做的一个代价就是无法有效地对实际参数进行检验。
Java 1.5的变长参数表的实现就是使用上述的方法,这样程序员就可以比较简单地处理变长参数表问题了,它的优点和缺点上面都已经涉及到了。下面是它的一个例子。
package com.oreilly.tiger.ch05;
public class Guitar {
private String builder;
private String model;
private float nutWidth;
private GuitarWood backSidesWood;
private GuitarWood topWood;
private GuitarInlay fretboardInlay;
private GuitarInlay topInlay;
private static final float DEFAULT_NUT_WIDTH = 1.6875f;
public Guitar(String builder, String model, String... features) {
this(builder, model, null, null, DEFAULT_NUT_WIDTH, null, null, features);
}
public Guitar(String builder, String model,
GuitarWood backSidesWood, GuitarWood topWood,
float nutWidth, String... features) {
this(builder, model, backSidesWood, topWood, nutWidth, null, null, features);
}
public Guitar(String builder, String model,
GuitarWood backSidesWood, GuitarWood topWood,
float nutWidth,
GuitarInlay fretboardInlay, GuitarInlay topInlay,
String... features) {
this.builder = builder;
this.model = model;
this.backSidesWood = backSidesWood;
this.topWood = topWood;
this.nutWidth = nutWidth;
this.fretboardInlay = fretboardInlay;
this.topInlay = topInlay;
}
}
- 相关回复 上下关系8
【原创】Java 1.5新特点的一些体验 老兵帅客 字510 2004-10-01 15:51:55
5. varargs变长参数表
😉我们是否应该使用这个Feature呢?Sun的观点是: Highway 字510 2004-10-03 22:03:57
4. Autoboxing and Unboxing 老兵帅客 字418 2004-10-02 18:36:38
3. Enumerated Types 老兵帅客 字2188 2004-10-02 18:25:47
.NET的enum和Java不一样,不是Class. Highway 字1283 2004-10-03 21:01:28
2. Generics 老兵帅客 字2941 2004-10-01 17:35:35
这里又一篇关于C# Generics的详细介绍,比较不错! Highway 字107 2004-10-02 06:56:30