Java泛型(一)泛型的使用和自我理解

Java泛型是JDK1.5引入的新特性,那么这个泛型引入的意义究竟是什么,并且要怎么用呢,以下是我对泛型的一些自我理解:

首先说Java中的泛型,引入的意义在于让一套代码可以用于多种类型,一般有三种使用场景,分别是泛型类,泛型接口,泛型方法。别管哪种形式,我理解的一个通用的概念就是泛型存在于其作用域内。这句话乍一看是废话,但是确是贯穿这三种形式的一句话。

先看泛型类:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package generic;

/**
 *
 * @author sunbowen
 * @param <T>
 */
public class GenericClass<T> {

    private T name;

    public T getName() {
        return name;
    }

    public void setName(T name) {
        this.name = name;
    }
}


泛型类中用到泛型的场景基本是在这个类中有此泛型的一个成员变量,然后是此成员变量对应的方法。那么这个成员变量可以是String或者其他类型,类型的不同并不会影响使用相应的方法。


再看泛型接口:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package generic;

/**
 *
 * @author sunbowen
 * @param <T>
 */
public interface GenericInterface<T> {

    public T get();

    public void set(T t);
}

泛型接口中用到泛型的场景基本就是此接口中的方法里用到泛型。不管是返回值还是形参,类型的变化并不影响使用方法。


最后看泛型方法:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package generic;

/**
 *
 * @author sunbowen
 */
public class GenericMethod {

    public <T> void setType(T t) {
    }

    public <T> T getType() {
        return null;
    }
}

泛型方法中用到泛型的场景基本就是此方法中里用到了泛型,如在形参中,如在返回值中。其类型的变化并不会影响使用方法。


下面举一个Java中本身的例子:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package generic;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author sunbowen
 */
public class GenericInner {

    public static void main(String[] args) {
        List<String> ls = new ArrayList<>();
        ls.add("abc");
        String str = ls.get(0);

        List<Integer> li = new ArrayList<>();
        li.add(1);
        Integer itr = li.get(0);
    }
}


在List这个容器中,方法都是与类型无关的,那么使用泛型就可以让List中的这一套代码应用于各种类型,并且泛型存在于List容器中的各个方法。

总而言之,泛型的使用还是比较简单的,只要理解其中概念和使用场景,基本上就没有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值