泛型体系详解

一.泛型

        泛型是一种允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。

        为什么要用泛型呢?当你封装一个类或方法时,希望根据参数来执行程序时,也就是事先不知道参数类型时,你就能用到泛型.

        有点抽象,举个例子:集合类collection,用来装集合对吧?但是你事先知道你要装什么集合吗?

你希望什么集合都能装就得用泛型了

        泛型的使用就是用占位符(大写字母),如T,K,E等来表示参数

二.泛型类

泛型最基础的就是泛型类了,使用就是在类名后面加占位符,表示该类中的占位符类型

用<类型占位符,类型占位符>表示,可以有多个类型占位符

class User<T,K>{
    private T password;
    private K age;

    public static void main(String[] args) {
        User<String,Integer> user = new User<>();
        user.password = "abc";
        user.age = 18;
        System.out.println();
    }

    public T getPassword() {
        return password;
    }

    public void setPassword(T password) {
        this.password = password;
    }

    public K getAge() {
        return age;
    }

    public void setAge(K age) {
        this.age = age;
    }
}

三.泛型方法

一.普通方法

方法中的参数类型可以用类型占位符替代

class User<T,K>{
    public void setPassword(T password) {
        this.password = password;
    }

二.静态方法

静态方法不属于类的对象,所以在方法头中声明其泛型

    public static <W> W getInformation(W information){
        System.out.println(information);
        return information;
    }

综上,只要是方法都可以自定义泛型类型

四.泛型接口

注意两点

1.泛型接口的实现类可以指定具体的泛型接口的具体泛型实现

2.泛型接口的实现类如果没有指定具体的泛型,则必须在类中声明一个展位类型

//泛型接口
interface User<T>{
    public void show(T information);
}
//1.泛型接口的实现类可以指定具体的泛型接口的具体泛型实现
class UserImpl1 implements User<Integer>{
    @Override
    public void show(Integer information) {
        System.out.println(information);
    }
}
//2.泛型接口的实现类如果没有指定具体的泛型,则必须在类中声明一个展位类型
class UserImpl2<T> implements  User<T>{
    @Override
    public void show(T information) {
        System.out.println(information);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值