原始类型和向后兼容、通配泛类型

  • 原始类型和向后兼容


没有指定具体类型的泛类型和泛型接口被称为原始类型,用于和早期的java版本向后兼容。

原始类型存在一定的安全隐患,所以一般不使用这种原类型.


  • 通配泛型


  1. 非受限通(?)
  2. 受限通配(? extends Object)
  3. 下限通配(? super T)

          受限通配

          


  
  
  1. package cn.huhui.demo06;
  2.  
  3. import cn.huhui.demo02.GenericStack;
  4.  
  5. public class AnyWildCardDemo {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. GenericStack<Integer> intStack=new GenericStack<>();
  10. intStack.push(2);
  11. intStack.push(-2);
  12. intStack.push(1);
  13. print(intStack);
  14. }
  15. public static void print(GenericStack<?> stack) {
  16. while (!stack.isEmpty()) {
  17. System.out.println(stack.pop()+" ");
  18. }
  19. }
  20. }

          ? extends T 称为受限通配,其中?表示T或T的子类型;


          super T 称为下限通配,表示 T或则T的父类型




  
  
  1. package cn.huhui.demo06;
  2. import cn.huhui.demo02.GenericStack;;
  3. public class SuperWildCardDemo {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. GenericStack<String> stack1=new GenericStack<>();
  8. GenericStack<Object> stack2=new GenericStack<>();
  9. stack1.push("hello");
  10. stack2.push(5);
  11. stack2.push("hghhg");
  12. add(stack1, stack2);
  13. AnyWildCardDemo.print(stack2);
  14. }
  15. public static <T> void add(GenericStack<T> stack1,GenericStack<? super T > stack2) {
  16. while(!stack1.isEmpty()) {
  17. stack2.push(stack1.pop());
  18. }
  19. }
  20.  
  21. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值