Java-泛型2020年

7 篇文章 0 订阅


一、泛型概述

  • 泛型的介绍
    泛型是JDK5中引入的特性,它提供了编译时类型安全监测机制
  • 泛型的好处
    ①把运行时期的问题提前到了编译器
    ②避免了强制类型转换
  • 泛型定义的格式
    <类型>:指定一种类型的格式,尖括号里面可以任意书写,一般只写一个字母
    <类型1, 类型2…>:指定多种类型的格式,多种类型之间用逗号隔开

二、泛型类

  • 定义格式
修饰符 class 类名<类型> { }
  • 实例
public class Demo {
    public static void main(String[] args) {
        Demo2<Object> objectDemo2 = new Demo2<>();
        objectDemo2.show("aa");
        Demo2<Object> a1 = new Demo2<>();
        a1.show(11);
        Demo2<Object> a2 = new Demo2<>();
        a2.show(1.2);
        Demo2<String> a3 = new Demo2<>();
        objectDemo2.show("aa");
        Demo2<Integer> a4 = new Demo2<>();
        a1.show(11);
        Demo2<Double> a5 = new Demo2<>();
        a2.show(1.2);
    }
}
class Demo2<XX> {
    public void show(XX aa) {
        System.out.println(aa);
    }
}

aa
11
1.2
aa
11
1.2

三、泛型方法

  • 定义格式
修饰符 <类型> 返回值类型 方法名(类型 变量名) {  }
  • 实例
public class Demo {
    public static void main(String[] args) {
        Demo2<String> st = new Demo2<>();
        st.show("aa");
        st.show("11","aa");
    }
}
class Demo2<AA> {
    public <aa> void show(aa bb) {
        System.out.println(bb);
    }
    public <bb> void show(AA xx, bb hh) {
        System.out.println(xx);
        System.out.println(hh);
    }
}

aa
11
aa

四、泛型接口

  • 定义格式
修饰符 interface 接口名<类型> {  }
  • 实现方式
    ①定义实现类时,定义和接口相同泛型,创建实现类对象时明确泛型的具体类型
    ②定义实现类时,直接明确泛型的具体类型
  • 实例
public class Demo {
    public static void main(String[] args) {
        AA aa = new AA();
        aa.aa("aa");
        BB<Object> objectBB = new BB<>();
        objectBB.aa(11);
    }
}
class BB<QQ> implements Demo2<QQ> {

    @Override
    public void aa(QQ aa) {
        System.out.println(aa);
    }
}

class AA implements Demo2<String> {

    @Override
    public void aa(String aa) {
        System.out.println(aa);
    }
}

interface Demo2<QQ> {
    void aa(QQ aa);
}

aa
11

五、类型通配符

类型通配符:<?>

  • ArrayList<?>:表示元素类型未知的ArrayList,它的元素可以匹配任何的类型,但是不能把元素添加到ArrayList中,获取出来的也是父类类型

类型通配符上限:<? extends 类型>

  • ArrayList <? extends Number>:它表示的类型是Number或者其子类型

类型通配符下限:<? super 类型>

  • ArrayList <? super Number>:它表示的类型是Number或者其父类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮华′

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值