1、泛型可以解决数据类型的安全性问题,主要原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。
2、格式:
访问权限 class 类名称<泛型,泛型…>{
属性
方法
}
3、泛型对象的创建
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
4、通配符<?>
: 使用一个奇怪的问号表示类型参数。是一种表示未知类型的类型约束的方法。
例如:
简单的泛型 Box 类中的T类型
public interface Box<T> {
public T get();
public void put(T element);
}
带有通配符参数的 Unbox 方法
public void unbox(Box<?> box) {
System.out.println(box.get());
}
此处参数(Box<?> box)
表示一个未知类型的box对象,因为还不清楚T的类型,如果擅自定义一个类型,那么T类型就被锁死,就不符合泛型的意义了。因此此处的通配符表示任意类型。
5、泛型方法:泛型方法中可以定义泛型参数,此时,参数的类型就是传入的类型。
格式:访问权限 <泛型标识> 泛型标识 方法名称([泛型标识 参数名称])
例如:
public <T>T tell(T t){
return t ;
}
调用的时候直接使用对象调用该方法
实例.tell(需要的参数)
例如:实例.tell(“thisistell”) 或者 实例.tell(10)
分别返回 String类型的thisistell 和 Integer类型的10
6、泛型数组:在使用泛型方法时候,也可以传递或者返回一个泛型数组。
例如:
public class GenericDemo{
public static void main(String[] args){
//此处arr数组可以设置为任意类型,String、int等都可以,泛型数组可以就收任意类型
String arr[] = {"zhangsan","lisi","wangwu"};
//Integer arr[] = {1,2,3,4};
tell(arr);
}
public static <T>void tell(T arr[]){
for(int i = 0; i < arr.length ; i++)
system.out.println(arr[i]);
}
}