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; }
}

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

2.2 泛型方法

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

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

/**
 * 泛型方法,参数类型是泛型,
 * 可以处理多种不同类型
 * @param a
 * @param <T>
 * @return
 */
public static <T> T getMiddle(T[] a){
    return a[a.length/2];
}

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

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);
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值