Java基础总结篇---泛型&可变参数
在我初学java的时候泛型我是没咋看的,直到后面做了安卓开发后才回过头来了解泛型。后来才渐渐体会到泛型的作用。至于可变参数,我现在才清楚,以前瞄过一眼,但是真的只是一眼。????
泛型
什么是泛型?
在创建对象的时候明确元素的数据类型的技术叫做泛型。泛型是一种特殊的类型,是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型。----参数化类型(把类型当做参数传递)
格式 : <数据类型> —这里的数据类型只能是引用类型。
为什么使用泛型?
早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。JDK1.5版本后出现。
优势:
- 把运行期间的问题提前到编译期间
- 避免了强制类型转换
- 优化了程序设计,解决了黄色警告线
泛型应用:
类 接口 抽象类 就需要使用泛型,一般来说在集合类中用的最多。
-
泛型类
- 把泛型定义在类上
- 格式:public class 类名<泛型类型1,…>
- 注意:泛型类型必须是引用类型
-
泛型方法
- 把泛型定义在方法上
- 格式:public <泛型类型> 返回类型 方法名(泛型类型 t)
-
泛型接口
- 把泛型定义在接口上
- 格式:public interface 接口名<泛型类型1…>
泛型高级
泛型如果明确的写的时候,前后必须一致。?表示任意类型
- 泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
- ? extends E
向下限定,E及其子类
- ? super E
向上限定,E及其父类
可变参数
定义方法的时候不知道该定义多少个参数
-
格式
-
修饰符 返回值类型 方法名(数据类型… 变量名){}
-
注意:
- 这里的变量其实是一个数组
- 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 (int b,int… a) b接收一个参数,其他的由a接收成数组格式。
-
-
Arrays工具类中的一个方法
- public static List asList(T… a)