JAVA方法的多变参数

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

可变参数的特点:

(1)、只能出现在参数列表的最后; 

(2)、...位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

 

public static void dealArray(int... intArray) {
		for(int i: intArray) {
			System.out.println(i + " ");
		}
	}

public static void main(String[] args) {
		dealArray();
		dealArray(1);
		dealArray(1,2);
		int[] intArray = {1,2,3};
		dealArray(intArray);
	}

 通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。

 

 

dealArray(); //dealArray(int[] intArray{});  
dealArray(1); //dealArray(int[] intArray{1});  
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});

  

 

 

可变参数和固定参数方法的优先级:

 

public static void a(int i, int j) {
		System.out.println("此方法是固定参数。");
	}
	
	public static void a(int ... intArray) {
		System.out.println("此方法是可变参数。");
	}

 

 

输出:

 

public static void main(String[] args) {
		a(1,2);
	}

 

 

结果:

 

此方法是固定参数。

 

 

能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。

 

在项目中看到别人使用,所以去网上查了相关资料。

文章信息摘自网络,仅供参考。

项目中使用如下:

 

 

//把方法的参数封装成键值对的MAP类型。
public static Map getMaps(Object ... s){
		Map map = new HashMap();
		for(int i=0;i+1<s.length;i+=2){
			map.put(s[i], s[i+1]);
		}
		return map;
	}

 

 

方法的调用:

Map map = ProfileOptionValueLocalServiceUtil.getMaps("companyId",line.getCompanyId()
							,"departmentId",line.getDepartmentId()
							,"budgetYear",order.getBudgetYear()
							,"budgetType",order.getBudgetTypeLookupCode(),"companyNature",order.getCompanyNatureLookupCode()
							,"profileOptionValue","N");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值