如果参数类型是泛型可变长参数,调用的时候只传参1个,而且参数还是数组,只要该数组的类型可以被泛型化(非基本数据类型的变量)则T为数组类型,否则(此时的数组类型为基本数据类型)T类型为
$[]
(用$表示该基本数据类型),如下代码进行了测试:
测试思想:首先定义了Intger[]、int[]类型的两个数组,我们如果只传入1个int数组,T就为int[];如果我们只传入一个Intger[],T为Integer;如果我们传入两个Integer[],T为Integer[];
package foundation.collection;
public class VaribleLengthParameterTest2<T> {
public static void main(String[] args) {
Integer[] a= {1,2,3};
int[] b= {1,2,3};
VaribleLengthParameterTest2.print1(b);
VaribleLengthParameterTest2.print1(a);
VaribleLengthParameterTest2.print1(a,a);
}
public static<T> void print1(T...a) {
for(T b:a) {
System.out.println(b);
}
System.out.println("---");
}
}
粗略验证
直接输出a中的所有元素
精确验证
有针对的测试a数组中的类型值是否与期待值相等
//只传入1个Intger[],则a中元素每一个都是Integer
//传入2个Intger[],则a中元素每一个都是Integer[]
//只传入1个int[],则a中元素每一个都是Int[]