你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

JAVA泛型

2021/12/14 0:36:54
  • 泛型(规范)
    • 背景:可以限制元素的类型
    • 使用泛型的时候,必须使用包装类(Integar、String等)
    • 自定义泛型类、泛型接口、泛型方法:
      • 自定义泛型类/泛型接口
        • 泛型作为变量,进行调用;
        • 在创建类时,应该new 的时候加上泛型
        • 在继承指明了泛型的父类,子类实例化时不需要指明泛型
        • 继承指明了泛型的父类,也可以保留父类的泛型,用于调用父类泛型的方法,此时子类创建时需要指定泛型
        • 泛型不同的引用不能相互赋值 ArrayList<String> 与.ArrayList<Integer>不能相互赋值
        • 如果泛型不指定,泛型对应的类型按照Object处理,但不等价与Object
        • 如果泛型指定的是基本数据类型,则需要用包装类替换(int 需要用Integer替换)
        • 静态方法不能使用类的泛型(泛型的指定是类实例化的时候,而静态方法是随着类的加载而创建)
        • 异常类不能声明为泛型
      • 自定义泛型方法
        • 泛型方法不是必须在自定义 泛型类中

    • 泛型在继承方面的体现:
      • 1.如果类A是类B的父类,G<A>和 G<B>是并列关系,不能赋值(会导致数据的紊乱)
      • 2.如果类A是类B的父类,A<G> 是B<G>的父类,可以赋值(List<Stirng> ArraryList<String>)
      • 3.如果类A是类B的父类,G<A>和 G<B>是并列关系,不能赋值(会导致数据的紊乱),二者共同的父类是G<?>
    • 通配符的使用:
      • 通过通配符“?”表示几个子类的父类

      • 添加(写入):add,使用通配符时,不能向内添加数据,除了添加null之外(因为不管什么类型,都可以添加null)
      • 获取(读取):get,允许读取数据,读取的数据类型为Object
    • 有限制条件的通配符:
      • <? extends A> 可以作为A和A的子类 的父类
        • 不可以添加数据
        • 可以读取数据
      • <? super A> 可以作为A和A的父类 的父类
        • 可以添加数据
        • 可以读取数据(必须用顶级父类Object接收)