7.6.4 自定义泛型的方法和使用

来源:互联网 发布:数据库管理程序 编辑:程序博客网 时间:2024/05/17 03:10

p { margin-bottom: 0.21cm; }

Java的泛型是从c++的泛型里面引用过来的由于java虚拟机设计原因 所以java泛型没有c++泛型强大

Java中的泛型类似于C++的模板 但这种相似仅限于表面,java语言中的泛型基本上完全在编译器中实现 用于编译器执行类型或检查和类型推断,然后生成普通非泛型的字节码,字节码里面的类型为泛型中参数类型的交集即传入两个参数,一个为int一个为float在字节码里面的类型就为Number,这种结束成为擦出erasure)(编译器使用泛型类型信息保证现场安全,然后生成字节码之前将其擦出)原因是因为扩展虚拟机指令集来支持泛型被认为是无法接受的,这回为java厂商升级其jvm造成难以逾越的障碍。

泛型的定义:

privatestatic<T> T add(T x, T y) { //<T>为类型 此类型必须定义在返回值的前一个Tx,T y中的T为前面泛型中定义的某个类型

 

泛型的类型必须是对象类型不能是基本类型如果是两个int参数 java有自动装箱功能,会封装成Integer对象 但如果泛型参数是一个int的数组 由于数组本身就是对象类型 编译器不会把数组内部的基本类型转化为对象类型 如 int[]{1,2,3}就不会把里面的1,2,3封装为Integer对象

定义泛型的时候 也可以用通配符限定范围

&定义的时候除了用以上的通配符外,还可以用&定义泛型的边界 &有点类似于与的意思

 

privatestatic<T extends 接口名&接口名>T add(T x, T y) 表示定义的类必须实现规定的两个接口

原创粉丝点击