美文网首页
javaSE_day13_泛型

javaSE_day13_泛型

作者: 智慧之门 | 来源:发表于2018-05-26 16:09 被阅读0次

泛型:参数化数据类型;类,方法 ,构造器,接口

好处:编译器 进行类型检查;

泛型类:类名 <类型参数>

类型参数

    可以是一个 也可以是多个,用逗号分隔用一个大写字母表示

    T - type    E - element    K - key    V -value

-------------------------------------------------------------------------------

原生类型

    类型后没有 指定具体的类型参数,这样的类型 叫 原生类型。

----------------------------------------------------------------------------------------

泛型的通配符

?                       无界通配符:可以匹配任意的引用类型

? extends  上限类型 上限 :可以匹配上限类型 和上限类型的子类型

?  super    下限类型 下限 : 可以匹配 下限类 和 下限类的父类

--------------------------------------------------------------------------------------------

类型参数 :可以指定 上限(上界)

注意:

    1.只能指定 上限

    2.还可以指定 多个 上限;

    3.上限可以是 类 也可以是接口

    4.上限 有类 和 接口,那么 要 先 继承类 后 实现接口,类在前 接口在后。

---------------------------------------------------------------------------------------------------------

类型参数 和 通配符区别

1.类型参数 只能指定上限; 通配符 可以指定 上限 和下限;

2.类型参数 可以指定 多个上限; 通配符 只能指定一个上限;

3.类型参数 可以作为一种 类型; 通配符不能表示为 一种类型。

----------------------------------------------------------------------------------------------------------

问题:String -> Object的子类,那么,Point<String>是否 是 Point<Object>的子类型呢?

不是,参数化类型不能继承。

-------------------------------------------------------------------------------------------------------------

问题: Point<String>和Point<Integer>是几个泛型类????

一个。

-------------------------------------------------------------------------------------------------------

类型擦除

1.参数化类型 擦除后 为 原生类型: Point<Integer> -> Point

2.类型参数:使用上界替换

     1)无界类型参数: Poiint<T> -> Object 用Object替换

     2)指定了一个上限的 ,用此上限类型来替换: Point<T extends Base> -> Base

     3)制定了 多个 上限的 ,用第一个上限替换: Point<T extends IA & IB> -> IA

-----------------------------------------------------------------------------------------------------------

重写

  父类 参数 擦除后 与 子类相同

  异常范围 不能 比父类 更大。

-----------------------------------------------------------------------------------------------

排序

自然排序

    按照 Comparable接口 的 方法 compareTo()的规则排序。

问题

外部比较器。

Comparator 函数式接口

--------------------------------------------------

Comparable  和 Comparator区别:

1.Comparable是默认的自然排序的方式:

  Comparator是我们 自己指定的一种排序方式。

2.Comparable的比较 代码 写在 要比较的对象的类型的内部的;

  Comparator 的比较代码 写在 要比较的对象的类型的外部的;

3.Comparable 只能指定一种 默认排序方式;

  Comparator 可以自定义 多种 排序方式。

--------------------------------------------------

枚举类型:

  1.底层 就是class类;

  2.已经继承了一个类  Enum,不能再继承其它的类了;

  3.对于一个 非 抽象的枚举类型 默认是final;

  4.构造器 是 private的;

  5.在枚举类型 的第一行代码处 列举出 所有的 枚举对象(实例);

  6.所有的枚举 对象 都是 public static final的。

  7.当枚举类中定义了抽象方法,那么每个对象的匿名内部类方式

     都必须实现 这个 抽象方法,并且这个枚举类为  abstract的。

----------------------------------------------------------------------------------------------------------------------------------------------

相关文章

  • javaSE_day13_泛型

    泛型:参数化数据类型;类,方法 ,构造器,接口 好处:编译器 进行类型检查; 泛型类:类名 <类型参数> 类型参数...

  • 泛型 & 注解 & Log4J日志组件

    掌握的知识 : 基本用法、泛型擦除、泛型类/泛型方法/泛型接口、泛型关键字、反射泛型(案例) 泛型 概述 : 泛型...

  • 【泛型】通配符与嵌套

    上一篇 【泛型】泛型的作用与定义 1 泛型分类 泛型可以分成泛型类、泛型方法和泛型接口 1.1 泛型类 一个泛型类...

  • 泛型的使用

    泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法 泛型类 泛型接口 泛型通配符 泛型方法 静态方法与...

  • Java 泛型

    泛型类 例如 泛型接口 例如 泛型通配符 泛型方法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型上下边...

  • 探秘 Java 中的泛型(Generic)

    本文包括:JDK5之前集合对象使用问题泛型的出现泛型应用泛型典型应用自定义泛型——泛型方法自定义泛型——泛型类泛型...

  • Web笔记-基础加强

    泛型高级应用 自定义泛型方法 自定义泛型类 泛型通配符? 泛型的上下限 泛型的定义者和泛型的使用者 泛型的定义者:...

  • 重走安卓进阶路——泛型

    ps.原来的标题 为什么我们需要泛型? 泛型类、泛型接口和泛型方法(泛型类和泛型接口的定义与泛型方法辨析); 如何...

  • Kotlin泛型的高级特性(六)

    泛型的高级特性1、泛型实化2、泛型协变3、泛型逆变 泛型实化 在Java中(JDK1.5之后),泛型功能是通过泛型...

  • Java 19-5.1泛型

    泛型类定义泛型类可以规定传入对象 泛型类 和泛型方法 泛型接口 如果实现类也无法确定泛型 可以在继承类中确定泛型:

网友评论

      本文标题:javaSE_day13_泛型

      本文链接:https://www.haomeiwen.com/subject/kcrddftx.html