范型编程通过参数化的方式将数据处理与数据类型解耦,通过对数据类型进行约束来保证数据处理正确性。
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 范型new java 范型初始化
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章