jdk源码--范型
来源:互联网 发布:iphone伪装mac地址 编辑:程序博客网 时间:2024/05/21 18:35
范型编程通过参数化的方式将数据处理与数据类型解耦,通过对数据类型进行约束来保证数据处理正确性。
java范型编译成字节码时,类型会在代码中被擦除,记录在Class文件的attribute域内,而在使用范型处做类型检查和类型转换。擦除规则为保留上界。
<T> 擦除后 为Object,<? extends A> 擦除后为A, <? super A> 擦除后变为Object
在定义包含范型的类或者方法时,会使用到范型字母,E或者其他乱七八糟的大些字幕,但是使用前要先定义。一般定义在尖括号中<E>。在类中使用时一般在类名后面跟上范型:class xxx<E>, 在方法中使用时,一般在返回值前定义:private <E> E xxx(){}
定义范型与直接定义Object有啥区别?会有相同校验嘛?譬如:private <E> void generic(E e, E e1) 与 private void generic(Object e, Object e1)在使用上会有所不同嘛?
在类定义时定义范型,然后会在实际使用时才会用到范型的实际类型,而不会在子类中用到范型的实际类型。所以使用范型定义类的时候要考虑到使用时才会指定实际类型。---所以范型方法有使用场景嘛???
使用范型时java编译器会对类型进行检查,所以范型方法也是有作用的,譬如参数和返回值都定义了一个范型,那么就不需要做强制类型转换了。
范型的作用可以从 参数和返回值 入手,一个作用时作为参数传入时作类型检查,另一个作用是返回时可以不用作强制转换。
用法也可以分两类(目前我就知道两类)来看,一个是类的范型,一个是方法的范型。
类的范型是在实例化的时候起作用,实例化之后,类内部使用的各种范型也都确定了。
方法的范型是在调用的时候起作用,参数的范型确定了,返回值的范型也就确定了。
java范型编译成字节码时,类型会在代码中被擦除,记录在Class文件的attribute域内,而在使用范型处做类型检查和类型转换。擦除规则为保留上界。
<T> 擦除后 为Object,<? extends A> 擦除后为A, <? super A> 擦除后变为Object
在定义包含范型的类或者方法时,会使用到范型字母,E或者其他乱七八糟的大些字幕,但是使用前要先定义。一般定义在尖括号中<E>。在类中使用时一般在类名后面跟上范型:class xxx<E>, 在方法中使用时,一般在返回值前定义:private <E> E xxx(){}
定义范型与直接定义Object有啥区别?会有相同校验嘛?譬如:private <E> void generic(E e, E e1) 与 private void generic(Object e, Object e1)在使用上会有所不同嘛?
在类定义时定义范型,然后会在实际使用时才会用到范型的实际类型,而不会在子类中用到范型的实际类型。所以使用范型定义类的时候要考虑到使用时才会指定实际类型。---所以范型方法有使用场景嘛???
使用范型时java编译器会对类型进行检查,所以范型方法也是有作用的,譬如参数和返回值都定义了一个范型,那么就不需要做强制类型转换了。
范型的作用可以从 参数和返回值 入手,一个作用时作为参数传入时作类型检查,另一个作用是返回时可以不用作强制转换。
用法也可以分两类(目前我就知道两类)来看,一个是类的范型,一个是方法的范型。
类的范型是在实例化的时候起作用,实例化之后,类内部使用的各种范型也都确定了。
方法的范型是在调用的时候起作用,参数的范型确定了,返回值的范型也就确定了。
阅读全文
0 0
- jdk源码--范型
- jdk源码
- JDK源码
- jdk源码
- jdk源码
- JDK源码
- JDK源码-ArrayList源码
- JDK源码-LinkedList源码
- 【JDK源码】JDK/ArrayList源码逐行详解
- JDK 类加载源码
- Debug JDK源码
- eclipse 查看jdk源码
- myEclipse 导入jdk源码
- eclipse查看jdk源码
- 如何查看JDK源码?
- jdk源码学习------String
- Eclipse添加JDK源码
- JDK源码分析----Integer
- java-exception
- 数据库链接的四种方式
- java学习时Eclipse中常用快捷键记录
- 职业生涯规划书
- SpringBoot报错(五) Failed to load ApplicationContext
- jdk源码--范型
- TAR命令详解
- 从0到1开发自动化测试框架
- springMvc上传文件的时候,404转不到Controler
- File IO(NIO.2):读、写并创建文件
- MFC连接到SQL Server数据库
- 微图App下载与安装教程
- 线性回归与分类, 解决与区别
- 解决Win10下MarkDownPad2不能实时预览的错误