Java之设计泛型方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38225558/article/details/82432143

设计一个泛型方法:
  要求:传入一个数组 ==》存在默认类型
     ①根据传入的数组,获得 一个副本,然后对该副本进行一个排序
     ②将数组返回出去
     ③当在使用方法的时候,传入什么类型,返回什么类型
 注意:需要在使用的时候指定类型

/**
 * 设计一个泛型方法:
 * 要求:传入一个数组 ==》存在默认类型
 *   ①根据传入的数组,获得 一个副本,然后对该副本进行一个排序
 *   ②将数组返回出去
 *   ③当在使用方法的时候,传入什么类型,返回什么类型
 * 注意:需要在使用的时候指定类型
 * @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;
	}*/

}

运行结果图:

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/82432143