泛型在方法中的使用规则是什么?
【重点】
格式:权限修饰符[static] <自定义泛型> 返回值类型 方法名(形参){ }
1.要求形式参数列表中必须有一个参数是当前自定义泛型;因为需要通过参数来约束,当前方法运行过程中泛型对应的具体数据类型;
2.返回值类型可以使用自定义泛型,而且是被形式参数列表中传入的泛型对应具体数类型控制;
3.方法内也可以使用自定义泛型,同时也是被参数当中泛型对应具体数据类型约束监控;
自定义泛型在代码中的使用
class Member {
public static void main(String[] args) {
//传入什么类型就返回什么类型
//传入一个Integer类型的数值,返回值也是Integer 类型;
Integer type1 = getType(1);
Float type2 = getType(3.14F);
Member type3 = getType(new Member());
String type4 = getType("小哈");
List list = getType(new ArrayList());
}
//T type 获取传入参数的数据类型
//<T>T 返回值类型限定了和传入的数据类型一致;
//也就是形参位置 需要一个 T 当然可以替换为任意一个大写字母 A,不过要<A>A 保持一致
//返回值位置 需要 <T>T
public static <T>T getType(T t){
return t;
}
}
泛型传递解析图(图片为网络获取)
<1> 一开始Integer type = getType(1); 中的实参1会传递给getType(T t){};方法形参,形参T由此获取为Integer类型,
<2>形参T获取为Integer类型后传递给 T 返回值数据类型;
<3>也就最后方法相当于 public static Integer getType(Integer t);
class Member {
public static void main(String[] args) {
//传入什么类型就返回什么类型
//传入一个Integer类型的数值,返回值也是Integer 类型;
Integer type1 = getType(1);
Float type2 = getType(3.14F);
Member type3 = getType(new Member());
String type4 = getType("小哈");
List list = getType(new ArrayList());
//任意类型的展示方法
printEverything(1);
printEverything(1.00F);
printEverything(1.66D);
printEverything(new char[]{
'a', 'b'});
//展示任意类型的数组
printEveryArray(new String[]{
"AA","BB"});
//泛型这里 需要用包装类 char[] 数组需要用包装类 Character[]
printEveryArray(new Character[]{
'a', 'b'});
//泛型这里 需要用包装类 int[] 数组需要用包装类 Integer[]
printEveryArray(new Integer[]{
1,0});
}
//T type 获取传入参数的数据类型
//<T>T 返回值类型限定了和传入的数据类型一致;
//也就是形参位置 需要一个 T 当然可以替换为任意一个大写字母 A,不过要<A>A 保持一致
//返回值位置 需要 <T>T
public static <T>T getType(T t){
return t;
}
//一个可以满足任意类型的展示方法
//返回值类型占位符是对应形参的,一定要存在【如果入参形参有T,返回值类型<T>也要存在】;
public static <T> void printEverything(T t){
System.out.println(t);
}
//一个方法可以满足展示任意类型的数组
//【如果入参形参有T,返回值类型<T>也要存在】
public static <T> void printEveryArray(T[] tArrays){
for(int i = 0;i < tArrays.length;i++){
System.out.println(tArrays[i]);
}
}
}