包装类和泛型

发布时间:2026/6/12 12:56:15

包装类和泛型 目录包装类装箱和拆箱什么是泛型泛型类的使用泛型类如何编译的泛型类的上界泛型方法通配符通配符上界通配符下界一、包装类在Java中由于基本类型不是继承自Object为了在泛型代码中可以支持基本类型Java给每个基本类型都对应了一个包装类型。基本数据类型和对应的包装类基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean二、装箱和拆箱概念装箱操作 新建一个 Integer 类型对象将 i 的值放入对象的某个属性中拆箱操作 将 Integer 对象中的值取出放到一个基本数据类型中eg:自动装箱和自动拆箱三、什么是泛型通俗讲就是适用于许多许多类型泛型的主要目的就是指定当前的容器要持有什么类型的对象。让编译器去做检查。此时就需要把类型作为参数传递。需要什么类型就传入什么类型。语法: class 泛型类名称类型形参列表 { } // 其他写法 class 泛型类名称类型形参列表 extends 继承类 { }egClass ClassNaneT { }类名后的 T 代表占位符表示当前类是一个泛型类了解【规范】类型形参一般使用一个大写字母表示常用的名称有E 表示 ElementK 表示 KeyV 表示 ValueN 表示 NumberT 表示 TypeS, U, V 等等 - 第二、第三、第四个类型泛型类的使用语法 泛型类类型实参 变量名 new 泛型类类型实参(构造方法实参);注意泛型只能接受类所有的基本数据类型必须使用包装类类型推导(Type Inference)当编译器可以根据上下文推导出类型实参时可以省略类型实参的填写eg:MyArrayInteger list new MyArray();小结(I)泛型是将数据类型参数化进行传递(II)使用 表示当前类是一个泛型类。(III)泛型目前为止的优点数据类型参数化编译时自动进行类型检查和转换泛型如何编译的擦除机制(I)基本概念在编译时Java 编译器会将泛型类型信息从代码中移除这个过程就叫做类型擦除。擦除后泛型类型会被替换为其边界类型通常是Object或者指定的类型。(II)擦除过程将泛型参数替换为其边界或 Object。在必要的地方插入类型转换以保持类型安全。生成桥接方法以保持多态性关于桥接方法泛型类型擦除可能导致子类方法和父类方法的签名不一致。为了维护 Java 的多态性需要桥接方法来确保子类方法能够正确覆盖父类方法。编译器会自动生成一个桥接方法泛型的上界语法: class 泛型类名称T(类型形参) extends 类型边界 { } // T 要么是Number的子类要么是Number这个类自己泛型方法语法 方法限定符 类型形参列表 返回值类型 方法名称 { ... } //静态的泛型方法 需要在static后用声明泛型类型参数使用示例1使用类型推导2不使用类型推导eg:通配符用于在泛型的使用即为通配符在 ? 的基础上又产生了两个子通配符?extends 类设置通配符上限?super 类设置通配符下限通配符上界? extends 上界 eg: ? extends Number//可以传入的实参类型是Number或者Number的子类通配符下界语法?super下界?superInteger//代表 可以传入的实参的类型是Integer或者Integer的父类类型

相关新闻