泛型应用加强

1.泛型是什么?

  1)参数化的一种类型,例如List<E>,Map<K,V>,PageObject<T>
   2)编译时的一种类型,运行阶段无效。

2.为何使用泛型?


    1)提高代码的灵活性,可重用性。(例如PageObject,PageUtil)
    2)提高程序的运行时性能。(可以将类型检测操作放在编译阶段)
   


3.泛型的应用类型?


   1)泛型类: class 类名<泛型>{}
   2)泛型接口: interface<泛型>{}
   3)泛型方法: 修饰符 <泛型>返回值类型 方法名(参数列表){}

  -说明:泛型必须是对象类型,例如Container<int>是错误的。

 

4.泛型的通配符? (通配符可以理解为一种不确定的类型)


   1)“?”可以作为泛型应用中的一种通配符。
   2)“?”代表泛型应用中任意一种实际参数类型(相当于实参)。
   
  -说明:"?"通过应用在变量定义,方法返回值定义。


  
5.泛型的上下界问题?

 

   1)指定泛型上界:<? extends 上届> 例如List<? extends Object>
   2)指定泛型下届:<? super 下届> 例如List<? super String>

   思考如下写法是否正确:
    1)List<Object> list1=new ArrayList<String>(); 不正确
    2)List<String> list2=new ArrayList<Object>(); 不正确

   如何指定具体的上下界
    1)List<? extends Object> list1=new ArrayList<String>();
    1)List<? super String> list1=new ArrayList<Object>();

说明:泛型上下界一般只应用在方法形参定义,返回值类型定义,以更好
实现这个方法的通用性。

 

6. 泛型的类型擦除

 

   泛型在运行时无效,在运行时所有泛型类型都会转换为Object类型。


   class Test<String,Integer>{}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值