2016 - 2024

感恩一路有你

Java中泛型的理解

浏览量:1764 时间:2024-01-16 21:06:29 作者:采采

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型类或泛型接口

如果一个类要和别的N个类型打交道,但是处理的逻辑都是一样的,我们可以把要处理的类作为类参(泛型),减少重复的代码。

class AListForStudent{
    void add(Student stu){
        ...
    }
    Student get(int index){
    }
}
class AListForTeacher{
    void add(Teacher stu){
        ...
    }
    Teacher get(int index){
    }
}
class AList{
    void add(Object stu){
        ...
    }
}

上面的代码展示了三种处理不同类型对象的方式:完全重复的逻辑,只是运算因子不一样,用方法的封装去解决;完全重复的逻辑,只是实例状态不同,用继承去解决;完全重复的逻辑,只是面向的具体类型不同,用泛型去解决。

class AListlt;Tgt;{
    // T待定,泛型类中可以把T当作一个类型来使用。一旦确定,所有T出现的地方都会被真实的类型替代
    void add(T stu){
        ...
    }
    T get(int index){
    }
}
AListlt;Studentgt; stuList  new AListlt;Studentgt;();
(new Teacher()); // 编译错误
(new 好学生()); // 正确

泛型方法

lt;Tgt; Listlt;Tgt; queryForList(String query, Classlt;Tgt; claz, Object... params)
调用:
Listlt;Studentgt; stuList  queryForList(sql, );

上面的代码展示了一个泛型方法的例子,通过在方法签名中使用lt;Tgt;声明类型参数,使得该方法可以返回不同类型的List。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。