泛型: 用来约束数据的数据类型
泛型的格式:
<数据类型>
泛型可以使用在 类,接口,方法,变量上
泛型的好处
A:提高了程序的安全性
B:将运行期遇到的问题转移到了编译期
C:省去了类型强转的麻烦
泛型类, 就是把泛型的声明 定义在类上
如何声明一个泛型类 :
格式 : public class 类名 <泛型类型> {}
什么时候将泛型的类型确定的?
创建对象的时候确定的
泛型方法: 把泛型定义声明在方法上
如何声明一个泛型方法:
格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
什么时候将泛型的类型确定的?
调用方法的时候确定的
泛型接口: 把泛型定义在接口上
如何声明一个泛型接口:
格式:public interface 接口名<泛型类型1…>
什么时候将泛型的类型确定的?
创建接口子类对象的时候确定的
泛型高级(通配符):
泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
? 理解为就是 Object类型
<? extends E>
向上限定,E及其子类
? extends Animal
? 代表的就是Animal类本身或者是Animal类的子类
<? super E>
向下限定,E及其父类
? super Animal
? 代表的就是Animal类本身或者是Animal类的父类
---------------------------
增强for
简化数组和Collection集合的遍历
格式:
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
好处:简化遍历
----------------------------
静态导入概述
格式:import static 包名….类名.方法名;
可以直接导入到方法的级别
注意事项
方法必须是静态的
如果有多个同名的静态方法,容易不知道使用谁?
这个时候要使用,必须加前缀。
-----------------------------
可变参数概述
定义方法的时候不知道该定义多少个参数
格式
修饰符 返回值类型 方法名(数据类型… 变量名){}
注意:
这里的变量其实是一个数组
如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个参数
|
|