JAVA基础:泛型(下)

目录

前言

泛型通配符

泛型边界


前言

上一篇我们学习了如何定义泛型和如何使用泛型,今天我们来学习一些泛型中的其他知识点,泛型通配符和泛型边界

泛型通配符

在我们进行封装时,如果我们不能在封装时确定数据的类型,但是可以在创建对象时确定数据的类型可以使用泛型,但是也可能会出现在创建对象时也不能确定类型的情况,这种情况一般出现在二次封装时

class A<T>{
    T i ;

   
}

class  A{
    A< object> a ;
}

在上面的代码中,我在b类中把a类型当成一个属性,这时我是不知道a类的泛型应该是什么类型的

如果我们使用object就会报错,所以如果遇到这种情况我们就要使用泛型通配符

class A<T>{
    T i ;

   
}

class  A{
    A< ?> a ;
}

我们使用?作为一个展位符,当我们可以确定泛型时在确定泛型的数据类型即可

泛型边界

我们会在应该确定泛型的数据类型却无法确定时使用泛型通配符,而当我们不能确定泛型但是能给出一个范围的时候,就可以使用泛型的边界

class A extends {}

class B extends A{}

class C<T> extends B{

    C<? extends A> c2 ;


}

上面的代码就是泛型的边界的语法格式,表示的意思是C的泛型是不确定的(?)但是他必须是A类或者继承A类也就是必须是A本类或者是A的子类,除了这种写法还有一种写法

class A extends {}

class B extends A{}

class C<T> extends B{

    C<? super B> c2 ;


}

这种写法就是,泛型的类型必须是B本类或者是B的父类,如果不在这个范围中就不能作为泛型传递

关于泛型我们就学到这里。

  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值