JAVA之泛型
泛型的本质是参数化类型,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。
定义格式:<类型>,<类型>.将来具体调用时候给定的类型可以看成实参,并且实参的类型只能是引用数据类型。
泛型的好处:把运行时期的问题提前到了编译期间。避免了强制类型转换。
泛型类:修饰符class
类名<类型>{}
泛型方法:修饰符<类型>返回值类型 方法名(类型 变量名){}
泛型接口:修饰符interface
接口<类型>{}
1 | package 泛型; |
1 |
|
为了表示各种泛型List
的父类,可以使用类型通配符。List<?>
:表示元素类型未知的List
。它的元素可以匹配任何的类型。List<?extends Number>
:他表示的类型是Number
或者其子类型List<?super Number>
:他表示的类型是Number
或者其父类型
可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的。
格式:修饰符 返回值类型 方法名(数据类型…变量名)
范例:public static int sum(int...a){}
可变参数注意事项:
1.这里的变量其实是一个数组
2.如果一个方法有多个参数,包含可变参数,可变参数要放在最后
使用:Arrays
工具类中有一个静态方法:public static<T> List <T> asList(T...a)
返回值由指定数组支持的固定大小的列表
返回的集合奴能做增删操作,可以做修改操作。List
接口中有一个静态方法:public static <E> List <E> of(E...elements):
返回包含任意数量元素的不可变列表
返回的集合不能做增删改操作Set
接口中有一个静态方法:public static <E> Set<E> of(E...elements):
返回一个包含任意数量元素的不可变集合
返回的集合不能做增删操作,没有修改的方法