• 0.泛型基础学习


    1.什么是泛型?

    泛型是对象类型的一种泛称,它可以指代所有类型的对象,因此,泛型程序代码可以处理多种不同类型的对象。
    这也是我们为什么需要泛型的原因:写出更通用的方法来提高工作效率。
    通过我们对泛型在不同地方的使用,泛型程序设计大概分为三种类型:

    • 泛型类
    • 泛型方法
    • 泛型接口

    2.通过例子来学习泛型

    2.1 泛型类

    我们通过解析下面的泛型类来进行泛型类的学习。

    public class Pari<T> {
        private T first;
        private T second;
        public Pari(){
            first=null;
            second=null;
        }
        public Pari(T first,T second){this.first=first; this.second=second; }
        public T getFirst() {return first;}
        public void setFirst(T first) {this.first = first;}
        public T getSecond() { return second;}
        public void setSecond(T second) {this.second = second; }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    从上面的代码我们可以猜出,这个类里的泛型就是 T 。 而在一个类里是如何使用泛型的呢?
    很简单,就是现在声明类的时候,在类名后面加上就行了,其中T是自定义的,它可以指代所有类型。
    但是在实际使用的过程中,对T还是可以设置限制的,( < T extends Type > or < T super Type >)让T的类型在可控范围内保证程序在运行过程中不会出错。

    2.2 泛型方法

    泛型方法其实就是带有泛型参数的方法,泛型方法的好处就是和泛型类一样便于编写通用的方法,泛型方法既可以在泛型类中定义,也可以在普通类中定义。

    我们先来看一个非常简单的泛型方法:

    /**
     * 泛型方法,参数类型是泛型,
     * 可以处理多种不同类型
     * @param a
     * @param 
     * @return
     */
    public static <T> T getMiddle(T[] a){
        return a[a.length/2];
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    从这里可以看出一般泛型方法中的泛型声明在返回参数的前面,修饰符后面,在泛型方法中,泛型的作用范围仅限于这个方法。

    2.3 泛型接口

    泛型接口的定义其实和泛型类定义差不多,唯一的差别就是接口中没有对泛型的处理逻辑。
    例如:

    public interface Maximum<T extends Comparable<T>> {
        /**
         * 获得数组最大值
         * @param array
         * @return
         */
        T getMax(T[] array);
    
        /**
         * 获得数组最小值
         * @param array
         * @return
         */
        T getMin(T[] array);
    
        /**
         * 对数组进行排序
         * @param array
         * @return
         */
        T[] sorted(T[] array);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    好啦,现在对泛型程序的结构有了大概的了解,我们就可以接着学习如何使用泛型编写高效的程序了。
    其实我们的泛型编程工作就是在泛型类,泛型方法以及泛型接口中对泛型进行处理从而达到我们想要的效果, 通过泛型编程,我们可以实现一些看起来比较高级的功能,这些高级功能让我们提高编程效率,从而从重复的劳动中解放。

  • 相关阅读:
    设计模式-单例模式
    基于matomo实现业务数据埋点采集上报
    docker版本的Jenkins安装与更新技巧
    由一个项目引起智能工厂及数字工厂的灵魂拷问
    P4447 [AHOI2018初中组]分组——贪心
    【JavaScript】事件操作及其本质
    笔试面试相关记录(11)
    Qemu系统模拟:1 简介
    【毕业设计】26-基于单片机心跳体温血压系统仿真设计(原理图+仿真+演示视频+论文)
    C Primer Plus(6) 中文版 第10章 数组和指针 10.9 复合字面值 10.10 关键概念 10.11 本章小结
  • 原文地址:https://blog.csdn.net/c1776167012/article/details/126477689