在《Thinking in Java》中的Chapter 15中,介绍到可变参数与泛型方法。我看了一些之后,发现很难理解,上网也找了一点资料,但是却很匮乏,于是打算自己写一篇,来全面的解释这个问题。
1.可变参数列表
先上代码:
(1)在这个例子中,可能感到奇怪的地方有如下几点:
public static void print(String str,Object... obj);
这里的参数Object...obj是什么意思呢?
其含义就是可变参数列表,“...”是可变参数列表的特殊标志。意思就是只要是属于Object类都可以作为参数传递进来。我们都知道,在Java中,所有的类都是直接或者间接继承自Object类。所以我们可以这么写代码
print("phl",1,2,"multiple parameters",true,3.2134);
Integer,String,Boolean,Float,均可以作为参数使用。
程序的执行结果如下:

2.泛型方法
在上面的例子中,可以看到,虽然我们可以直接继承自Object类,但是Java中推出了一中方法----泛型,来让这种参数变成某种不确定的类型,从而让更多的类型适用。【这里,我也在思考为什么不直接使用Object类而非要适用泛型呢?】
所以我们将上面的那个代码稍作修改,呈如下:
(1):这里我们将
这里的<T>即是范型方法的标志,然后在参数列表中以可变参数列表标出。
执行结果如下:
下面我们来看一个稍微复杂的实例
(1):public static <T> List<T> makeList(T...args)中,第一个<T>表示的是这是一个泛型方法,后面的 List<T>表示的是该方法返回的是一个List<T>的对象,后面的(T...args)表示可变参数列表。
(2):再往后面,程序就简单啦,按照你所想的执行应该是没有问题的。