设计一个泛型方法:
要求:传入一个数组 ==》存在默认类型
①根据传入的数组,获得 一个副本,然后对该副本进行一个排序
②将数组返回出去
③当在使用方法的时候,传入什么类型,返回什么类型
注意:需要在使用的时候指定类型
/**
* 设计一个泛型方法:
* 要求:传入一个数组 ==》存在默认类型
* ①根据传入的数组,获得 一个副本,然后对该副本进行一个排序
* ②将数组返回出去
* ③当在使用方法的时候,传入什么类型,返回什么类型
* 注意:需要在使用的时候指定类型
* @author 郑清
*/
public class Demo {
public static void main(String[] args) {
Integer[] arr = {1,5,2,3,4,6};
Integer[] returnArr = returnArr(arr);//注意:指定类型是在该处使用的时候指定得到
System.out.println(Arrays.toString(returnArr));
Character[] arr2 = {'A','C','B'};
Character[] returnArr2 = returnArr(arr2);
System.out.println(Arrays.toString(returnArr2));
}
/*
* static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType):复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。
* U[] : 传入的一个泛型数组
* 返回一个泛型数组:根据传入数组类型决定的
* int newLength : 新数组 的长度,及从original数组中拷贝 的元素个数
* Class : 知道创建数组,需要知道具体的类型的,该方法内部可以通过Class知道具体类型,所以可以创建数组返回
*/
public static <T> T[] returnArr(T[] arr) {
Object[] copyOf = Arrays.copyOf(arr, arr.length, arr.getClass());
Arrays.sort(copyOf);
return (T[]) copyOf;
}
//基本思路:由于Java规定不能创建泛型数组,所以必须知道具体类型
/* public static <T> T[] returnArr(T[] arr) {
T[] newArr = new T[arr.length];//因为创建数组,必须知道具体类型,所以这种方式创建泛型数组是不可以的
System.arraycopy(arr, 0, newArr, 0, arr.length);
Arrays.sort(newArr);
return newArr;
}*/
}
运行结果图: