泛型

泛型概述与好处

泛型其实就是一种未知的,不确定的数据类型。比如:ArrayList<E>,尖括号中的E就是一个泛型(未知的,不确定的数据类型),在我们使用的这个类的时候才可以确定这个E表示的类型。    泛型可以省略,如果省略,就看成泛型为Object

好处:1.省略了强转的代码;2.将运行时的问题提前到了编译时期

注意:Java中的泛型都是伪泛型,只在源代码阶段有效,一旦编译,就会消失。

泛型的定义与使用

1.1如果在定义类的时候类名后面加上<T>,那么这个类就变成了泛型类,尖括号中的字母可以是任何字母。

例如:public class 类名<T>这就是泛型类

1.2如果想要缩小泛型的使用范围,延后泛型的确认时间,可以使用泛型方法,在方法中定义的泛型,只能在方法中使用,在方法中定义的泛型所表示的数据类型,必须等到调用方法的时候才能确定。

        泛型方法的定义格式: 

                                      修饰符 <泛型> 返回值类型  方法名(参数列表){

                                           方法体;  

                                            }

               例如:public T method(T t){

                               return   t; 

                      }

2.如果在定义接口的时候,接口名后面写上<T>,那么这个接口就是泛型接口。

        例如:public interface MyInterface<T>{}

2.1等创建实现类的时候确定

         例如:public class MyClass implements MyInterface<String>

2.2 等创建对象的时候才确定

             例如:public class MyClass<T> implements MyInterface<T>{

                                   public T method(T t);{

                                               return     t;

                                          }   

                           }

                           Myclass<String> mc=new MyClass();

泛型通配符

                 泛型之间并没有继承关系

                 例如:ArrayList<Object>并不是ArrayList<String>的父类

如果想要让泛型类型可以匹配任何类型,那么我们可以使用泛型通配符

?表示泛型通配符,可以匹配任何类型的泛型

注意:泛型通配符只能被动匹配,不能主动使用。

泛型的限定:可以对泛型通配符?的范围进行一个限制

           例如:<?   extends  A>      泛型要么是A类,要么是A类的子类          上限(最高到A类)

                     <?     super    A>      泛型要么是A类,要么是A类的父类           下限(最低到A类)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值