需要在一定的范围内取值,这个值只能是这个范围内值的任意一个
目标:实现交通信号灯的案例
枚举使用一个关键字:enum
Private Color color;
Public void test(){ thid.color=Color.RED}
enum Color(){ RED,REEN,YELLOW}
枚举的构造方法也是私有的
在枚举里面添加一个构造方法,如果构造方法里面有参数,那么枚举的每一个实例都应该有参数
在枚举里面添加一个抽象方法,那么,每一个实例里面都应该重写抽象方法
name():返回枚举的名称
ordinal():返回枚举的下标
valueOf()(Class
valueof(String name):转换枚举对象
values():获取所有枚举对象数组
在代码里面直接使用静态导入的方法,导入静态方法或常量
Import static xx.xx.xxx
*import static java.lang.System.out
*import static java.util.arrays.sort
装箱:把基本的数据类型装换成包装类
Integer i= 10;
拆箱:把包装类装换成基本数据类型
Int m = i;
Jdk是向下兼容的
使用的范围, 1 遍历数组 2 实现了Iterable接口的集合类
List,set 实现了Iterable,接口,map没有实现,所以不可以使用
增强for的底层就是迭代器,是为了替代迭代器
泛型的擦除:
泛型只出现在源代码阶段,编译之后就自动删除
当实现多个方法,这些方法里面的逻辑基本相同,唯一不同的是传递的参数的个数不同,可以使用可变参数
Public void add(int…nums){nums 可以理解为一个数组,这个数组存储传递过来的参数}
注意:可变参数写在方法的参数列表中,不可以单独定义
在参数列表中只能有一个可变参数,方法的参数列表中可变参数只能放在最后
应用在一些通用性比较高的代码中,框架中大部分使用的是反射
在框架中,基于配置文件来开发的
*****在配置文件中配置了类,可以通过反射得到类中的所有内容,可以让类中的某个方法来执行
所有内容包括:属性,没有参数(有)的构造方法,普通方法(set,get和 自定义)
反射的过程:
*首先需要把java文件保存到本地磁盘 .java
*编译java文件,生成.class
*使用jvm,把class文件通过类加载到内存中
*class文件在内存中使用Class类表示
当使用反射的时候,首先需要获取到Class类,得到了这个类之后,就可以得到class文件里面的所有的内容
属性用过一个类 Filed
构造方法通过一个类Constructor
普通方法通过一个类Method
首先要获取Class类,三种方法
1 Class calss1=Person.class;
2 Class class2 =new person().getClass();
3 Class class3=Class.forName(“类的全名”);
操作有参数的构造方法
Class c1=Class.forName(“目标类的全名”);
Constructor cs =c1.getConstructor(String.class,String.class);
Person p1 = (Person) cs.newInstance(“lisi”,”100”);