当前位置:   article > 正文

JAVA基础:泛型(下)

JAVA基础:泛型(下)

目录

前言

泛型通配符

泛型边界


前言

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

泛型通配符

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

  1. class A<T>{
  2. T i ;
  3. }
  4. class A{
  5. A< object> a ;
  6. }

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

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

  1. class A<T>{
  2. T i ;
  3. }
  4. class A{
  5. A< ?> a ;
  6. }

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

泛型边界

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

  1. class A extends {}
  2. class B extends A{}
  3. class C<T> extends B{
  4. C<? extends A> c2 ;
  5. }

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

  1. class A extends {}
  2. class B extends A{}
  3. class C<T> extends B{
  4. C<? super B> c2 ;
  5. }

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/913204
推荐阅读
相关标签
  

闽ICP备14008679号