计算机程序的思维逻辑 (35) - 泛型 (上) - 基本概念和原理

发布时间:2017-7-1 11:48:26编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"计算机程序的思维逻辑 (35) - 泛型 (上) - 基本概念和原理 ",主要涉及到计算机程序的思维逻辑 (35) - 泛型 (上) - 基本概念和原理 方面的内容,对于计算机程序的思维逻辑 (35) - 泛型 (上) - 基本概念和原理 感兴趣的同学可以参考一下。

之前章节中我们多次提到过泛型这个概念,从本节开始,我们就来详细讨论Java中的泛型,虽然泛型的基本思维和概念是比较简单的,但它有一些非常令人费解的语法、细节、以及局限性,内容比较多。

所以我们分为三节,逐步来讨论,本节我们主要来介绍泛型的基本概念和原理,下节我们重点讨论令人费解的通配符,最后一节,我们讨论一些细节和泛型的局限性。

后续章节我们会介绍各种容器类,容器类可以说是日常程序开发中天天用到的,没有容器类,难以想象能开发什么真正有用的程序。而容器类是基于泛型的,不理解泛型,我们就难以深刻理解容器类。那,泛型到底是什么呢?

什么是泛型?

之前我们一直强调数据类型的概念,Java有8种基本类型,可以定义类,类相当于自定义数据类型,类之间还可以有组合和继承。不过,在第19节,我们介绍了接口,其中提到,其实,很多时候,我们关心的不是类型,而是能力,针对接口和能力编程,不仅可以复用代码,还可以降低耦合,提高灵活性。

泛型将接口的概念进一步延伸,"泛型"字面意思就是广泛的类型,类、接口和方法代码可以应用于非常广泛的类型,代码与它们能够操作的数据类型不再绑定在一起,同一套代码,可以用于多种数据类型,这样,不仅可以复用代码,降低耦合,同时,还可以提高代码的可读性和安全性。

这么说可能比较抽象,接下来,我们通过一些例子逐步来说明。在Java中,类、接口、方法都可以是泛型的,我们先来看泛型类。

一个简单泛型类

我们通过一个简单的例子来说明泛型类的基本概念、实现原理和好处。

基本概念

我们直接来看代码:

复制代码
public class Pair<T> {

    T first;
    T second;
    
    public Pair(T first, T second){
        this.first = first;
        this.second = second;
    }
    
    public T getFirst() {
        return first;
    }
    
    public T getSecond() {
        return second;
    }
}
复制代码

Pair就是一个泛型类,与普通类的区别,体现在:

  1. 类名后面多了一个<T>
  2. first和second的类型都是T 

T是什么呢?T表示类型参数,泛型就是类型参数化,处理的数据类型不是固定的,而是可以作为参数传入。

怎么用这个泛型类,并传递类型参数呢?看代码:

Pair<Integer> minmax = new Pair<Integer>(1,100);
Integer min = minmax.getFirst();
Integer max = minmax.getSecond();

Pair<Integer>,这里Integer就是传递的实际类型参数。

Pair类的代码和它处理的数据类型不是绑定的,具体类型可以变化。上面是Integer,也可以是String,比如:

Pair<String> kv = new Pair<String>("name","老马");

类型参数可以有多个,Pair类中的first和second可以是不同的类型,多个类型之间以逗号分隔,来看改进后的Pair类定义:

复制代码
public class Pair<U, V> {

    U first;
    V second;
    
    public Pair(U first, V second){
        this.first = first;
        this.second = second;
    }
    
    public U getFirst() {
        return first;
    }

    public V getSecond() {
        return second;


上一篇:Ubuntu jdk安装详细
下一篇:ActiveMQ 性能调优

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款