码迷,mamicode.com
首页 > 编程语言 > 详细

【Java】JDK1.5以后新型的泛型参数传递方法Object...args

时间:2015-03-01 13:18:09      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:java   泛型   参数传递   重写   object...args   

Object...args是JDK1.5以后新型的参数传递,已经越来越普及了。它在一些未知参数变量的多少或者一个方法需要应对不同数目变量又不想重写方法的情况很有用。因为它不像以前那样需要定义数组,甚至定义ArrayList的动态数组再配合方法的重写来完成变量的传递。极大地提高了程序的复用性。可能这段话有点抽象,还是举一个简单易懂的例子去说明吧!

我要达到如下的效果,当一个方法收到5个整形变量int的时候,输出这5个整形变量,并求和,如果这个方法收到11个整形变量int的时候,同样做这件事。如果仅收到2个整形变量的时候,仅仅输出“你这是传来了两个参数!”。

技术分享

这个对于大部分学习完JAVA课程的同学,都会使用同名方法的在不同变量的情况下的重写去解决这个问题,但是如果我要求收到X个变量都做输出并求和这件事情呢?这个X从1到200000,那么有的人会提出使用传递ArrayList动态数组到同名方法去解决这个问题。其实有了JDK1.5以后新型的泛型参数传递方法Object...args你根本就不需要写得这么复杂,写这么多代码。

以下的代码实现与上图同样的运行效果。

class TestClass {
	public void testOverloading(int i, int j) {
		System.out.println("你这是传来了两个参数!");
	}
	
	public void testOverloading(int... args) {
		System.out.println("传递过来的参数数量为" + args.length + "个");
		System.out.print("分别是:");
		int total = 0;
		for (int i : args) {
			System.out.print(i + " ");
			total += i;
		}
		System.out.println();
		System.out.println("总和为:" + total);
	}
}

public class NewVariable {
	public static void main(String[] args) {
		//找到public void testOverloading(int... args){}
		new TestClass().testOverloading(1, 2, 3, 4, 5);
		System.out.println("======================");
		//找到public void testOverloading(int... args){}
		new TestClass().testOverloading(1, 2, 3, 4, 5, 6, 1, 213, 123, 24, 1);
		System.out.println("======================");
		//因为存在public void testOverloading(int i, int j) {},所以使用这个方法
		//无视public void testOverloading(int... args){}
		new TestClass().testOverloading(1, 2);
	}
}

可以看到,在TestClass中testOverloading()方法,面对不同的参数有不同的解决方法,这就是所谓的被多次重写。调用这个方法,如果传递过来的参数不是两个的话,则直接调用所谓的泛型方法public void testOverloading(int... args) {},这东西对于没有相应参数的解决方法都适用,所以叫泛型嘛!形式参数int...args与int[] args或者是int args[]没有区别,就是整形数组args[],你可以按照一个普通的整形数组操作它,但是为了实现泛型,你必须写成int...args。在这个方法里面也使用了JDK1.5以后新型的遍历方式遍历,具体见《【Java】用JDK1.5之后的新型数组遍历方法遍历HashMap、HashMap不应该存储多元组》(点击打开链接),不再赘述。

【Java】JDK1.5以后新型的泛型参数传递方法Object...args

标签:java   泛型   参数传递   重写   object...args   

原文地址:http://blog.csdn.net/yongh701/article/details/44001585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!