62.泛型在方法中的使用规则是什么?自定义泛型在代码中的使用

泛型在方法中的使用规则是什么?

【重点】
格式权限修饰符[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]);
        }
    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>