[纯属个人理解,代码参考自视频]
用途:
1.用于集合容器中,可以使集合记住存储数据的类型,防止频繁转换类型可能导致的ClassCastException。用于javac编译器的类型检查,减少程序因为类型错误导致的bug的风险。
2.类型参数化
泛型方法:
package cn.cc.test;
public class Demo2 {
public static void main(String[] args) {
Integer[] arr = new Integer[] {110,220,330,440,550};
String[] arr2 = new String[] {"s1","s2","s3","s4","s5"};
outputArr(arr);
swap(arr, 1, 3);
System.out.println();
outputArr(arr);
System.out.println();
outputArr(arr2);
swap(arr2, 1, 3);
System.out.println();
outputArr(arr2);
}
private static <T> void outputArr(T[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
private static void outputArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
private static void outputArr2(String[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
/*
使用泛型方法需要定义一个类型,使用大写字母表示T(也可是其他字母):
这个T表示任意的类型,通常写在返回值类型之前
这个T就相当于定义了一个类型,这个类型是T
接下来即可使用这个T类型了
*/
public static <T> void swap(T[] arr, int i, int j) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
// arr[i] = arr[i] ^ arr[j];
// arr[j] = arr[j] ^ arr[i];
// arr[i] = arr[i] ^ arr[j];
}
private static void swap2(String[] arr, int i, int j) {
String temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
泛型类:
package cn.cc.test;
/**
* 自定义泛型--泛型类
* 泛型类的定义和练习
* @author ???
*
* @param <T>
*/
public class Demo4<T> {
T t;
public void setontent(T t) {
this.t=t;
}
public T getContent() {
return this.t;
}
/**
* 静态方法不能使用类定义的泛型
* @param t
*/
//public static void fun(T t) {}
}