Java可变参数列表

     如果需要设计一个方法的参数为可变的,即参数的数目为可变的同一类型,一般有两种方法实现:

第一种为参数为一个数组,如下:

ChangeParameter为一个类

public class ChangeParameter {
    
    Object[] array;
    String[] args;
    int a;
    
    public ChangeParameter(){
        
    }
    
    public ChangeParameter(Object[] array){
        this.array = array;
    }
    
    //新机制
    public void newMethodChangeParameter(Object... args){
        this.array = args;
    }
    
    /*
     * 多重可变参数,重载
     * 第一个参数必须是整型,而后面的参数则必须是String型
     */
    public void newMethodChangeParameter(int a,String...  args){
        this.a = a;
        this.args = args;
    }
    
    
    public void  print(){
        for(Object a:array){
            System.out.print("Array: " + a + "  ");
        }
        System.out.println();
        
        if(args!=null && this.args.length != 0){
            System.out.println("Int:"+ a);
            for(String a:args){
                System.out.print("args: " + a + " ");
            }
            
            System.out.println();
        }
        
    }
    
}

 

实现:

//用于测试,没什么用处

class A{}

public class MainTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

        //老方法
        new ChangeParameter(new Object[]{ "a" , "b", "c" }).print();
        new ChangeParameter(new Object[]{ 2 , "b", "c" }).print();
        new ChangeParameter(new Object[]{ new A(), new A(), new A() }).print();
    }

}

输出如下:

Array: a  Array: b  Array: c  
Array: 2  Array: b  Array: c  
Array: ChangePara.A@dc8569  Array: ChangePara.A@1bab50a  Array: ChangePara.A@c3c749 

这种方法传输的是一个数组,但在实例化方法的时候较为复杂,且不易操作;

第二种方法:

调用如下;

//新方法
        ChangeParameter cp = new ChangeParameter();
        cp.newMethodChangeParameter("Na","Nb");
        cp.print();
        
        cp.newMethodChangeParameter(1,"tt","rr");
        cp.print();
        
        //第一个参数为整数,后面的则必须为String类型
        cp.newMethodChangeParameter(77, "TEST","CAT","BUT");
        
        cp.print();

 

这种方法相对来说实现简单,且灵活性更强。但是后面的可变参数(String...  args)必须放到参数的最后一个位置,并且一个方法只能有一个可变参数。其实可变参数也是数组,本质上属于数组,所以在ChangeParameter类中可以直接使用一个数组来引用。

 

posted @ 2013-01-29 15:17  杨隋  阅读(619)  评论(0编辑  收藏  举报