Mybatis源码解析:Java泛型详解

本文深入探讨了Java泛型的各个方面,包括泛型接口、泛型方法、泛型方法与可变参数的结合使用,以及静态方法中的泛型限制。强调了泛型方法的重要性,并介绍了类型通配符的概念,包括下限和上限,帮助理解其在集合操作中的应用。此外,文章还提及了相关面试题和算法题,提供全面的学习和备考资源。
摘要由CSDN通过智能技术生成

注意:①泛型的类型参数只能是类类型,不能是基本属性类型;②不能对确切的泛型类型使用instanceof操作。如下面的操作是非法的,编译时会出错。if(ex_num instanceof Generic<Number>){ }

4.2 泛型接口


泛型接口与泛型类的定义及使用基本相同。泛型接口常被用在各种类的生成器(专门负责创建对象的类)中,一个生成器一般只定义一个next方法,用于产生新的对象。可以看一个例子:


//定义一个泛型接口

public interface Generator<T> {

    public T next();

} 

当实现泛型接口的类,未传入泛型实参时:


/**

 * 未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需将泛型的声明也一起加到类中

 * 即:class FruitGenerator<T> implements Generator<T>{

 * 如果不声明泛型,如:class FruitGenerator implements Generator<T>,编译器会报错:"Unknown class"

 */

class Generator<T> implements Generator<T>{

    @Override

    public T next() {

        return null;

    }

} 

当实现泛型接口的类,传入泛型实参时:


/**

 * 传入泛型实参时:

 * 定义一个生成器实现这个接口,虽然只创建了一个泛型接口Generator<T>

 * 但是可以为T传入无数个实参,形成无数种类型的Generator接口。

 * 在实现类实现泛型接口时,如已将泛型类型传入实参类型,则所有使用泛型的地方都要替换成传入的实参类型

 * 即:Generator<T>,public T next();中的的T都要替换成传入 的String类型。

 */

public class Generator implements Generator<String> {

    private String[] fruits = new String[]{"Apple", "Banana", "Pear"};

    @Override

    public String next() {

        Random rand = new Random();

        return fruits[rand.nextInt(3)];

    }

} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值