这里以泛型可变参数为例:
package com.ljp.shujujiegou;
public class MethodGeneric {
public <T> void method(T...args){
for(T t:args){
System.out.println(t);
}
System.out.println(args);
}
public <T> void method02(T t1, T t2, T...args){
for(T t:args){
System.out.println(t);
}
System.out.println(t1);
System.out.println(t2);
System.out.println(args);
}
}
class Test5 {
public static void main(String[] args) {
MethodGeneric methodGeneric = new MethodGeneric();
String[] arr = new String[]{"a","b","c"};
Integer[] arr2 = new Integer[]{1,2,3};
methodGeneric.method(arr);
methodGeneric.method(arr2);
methodGeneric.method02("aaa","bbb", "123", "ddd", "eee");
methodGeneric.method02(111,"bbb", 123, "ddd", "eee");
}
}
//运行结果
a
b
c
[Ljava.lang.String;@4f023edb
1
2
3
[Ljava.lang.Integer;@3a71f4dd
123
ddd
eee
aaa
bbb
[Ljava.lang.String;@7adf9f5f
123
ddd
eee
111
bbb
[Ljava.io.Serializable;@85ede7b
这里T... args
就是泛型定义的可变参数,…表示此处接受的参数可为0到多个Object类型的对象,或者是一个Object[],args指具体传入的对象,传入什么类型即为什么类型。
从运行结果可以看出,a、b、c时
arr1
的打印结果,1、2、3时arr1
的打印结果,所以泛型定义的可以传入任意类型的数组对象;
methodGeneric.method02("aaa", "bbb", "ccc", "ddd", "eee");
中aaa
放入t1
中,bbb
放入t2
中,先打印了ccc,ddd,eee
,可知123,ddd,eee
放入了args,即传入了多个数据,也可传入不同类型的数据,如methodGeneric.method02(111,"bbb", 123, "ddd", "eee");。