java泛型的初理解

泛型

1.为什么使用泛型

 ArrayList list=new ArrayList();
         list.add(11);
         list.add(22);
         list.add(new Student("yfz",180));
         Iterator iterator= list.iterator();
         while(iterator.hasNext())
         {
             Object c=iterator.next();
             System.out.println(c);
         }
 // 无法使用他的特有行为  如length
 // 泛型为伪泛型
 // 泛型擦掉   在java文件中存在  class无
 //ArrayList<char>A=new ArrayList<char>();
 //泛型不可以写基本数据类型 如integer,可以传入子类
 //默认为Object

2. 泛型类

 public class Mylist<E>{
     private T t;
     public void set(T t){this.t=t;}
     public T get()return t;
 }
 //main 
 Mylist<Integer>list=new Mylist();
 //要规定类型
 ​

3. 泛型方法

 public static <T> T show(T a){
     return T;
 }
 ​
 public static<E> void show1(E...e) {//可变参数
         for (E element : e) {
             System.out.println(element);
         }
 }

4. 泛型接口

    1. 实现类给出具体的类型

  public class imp implements List<String>{
      ...
  }
 main
     imp i =new imp();
    1. 实现类实现了一个泛型的接口

     public class MyArraylist<E>implements list<E>
     {
         ...
     }
     main:
        MyArraylist mylist=new MyArraylist();
     ​

5. 泛型涉及的符号

  • 背景:

  static class YE{};
  static class Fu extends YE{};
  static class wu extends Fu{};
 ​
 public static void method (ArrayList<YE>list){
 }
  • 弊端:

  ArrayList<YE> list1 = new ArrayList<>();
  ArrayList<Fu> list2 = new ArrayList<>();
  ArrayList<wu> list3 = new ArrayList<>();
  //method(list2);      //1.泛型不具有继承性
  • 但是数据具有传承性

  • list1.add(new Fu());

方案 1

  • 用泛型

  •  public static <T> void method(Arraylist<E>list){
         
     } 
  • 弊端 可以传不相关的类

方案 2

 //使用  ?
 // ? extend E 子类 表示未知的类型,但它是 T 或 T 的某个子类型。
 // ? super E 父类

 public static void method1(ArrayList<? extends YE>list)
 {
 ​
 }
    public static void method2(ArrayList<? super Fu>list){
 ​
  }
  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值