标签: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); } }
【Java】JDK1.5以后新型的泛型参数传递方法Object...args
标签:java 泛型 参数传递 重写 object...args
原文地址:http://blog.csdn.net/yongh701/article/details/44001585