----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
关键字:枚举、反射、Class类、反射、Constructor类、Field类、Method类、数组的反射、框架、类加载器、配置文件
枚举enum
定义一个类型,让该类的变量的取值只能是若干个固定值中的一个,否则编译报错,这个过程称为枚举。枚举可以让编译器在编译时就控制源程序中的非法值,普通变量无法实现。本质是限制了对象的创建。
普通类实现枚举:本类中,私有化构造函数,并限制了对象和引用变量的创建,将引用变量变成常量(对象类型)。外部类在使用本类时,引用变量只能赋值这些常量,不能指定规定以外的值,例如一星期的七天,3色的交通灯。
普通类实现枚举的思路:
1. 私有构造方法。
2. 每个元素分别用一个共有的静态变量表示。
3. 可以有共有方法和抽象方法。例如,采用抽象方法、匿名内部类和多态定义nextDay()就将大量的if、else转成成一个个独立的子类。
通过点击左边框里的错误图标,可以直接创建新的类、接口等,非常便捷。
枚举相当于一个类,枚举里面的元素相当于常量,指向实例对象。可以调用一些方法对枚举的对象进行操作,就像普通类通过继承Object类获得了一些基本方法。例如,name()、toString()、ordinal()(自己的顺序)、getclass()。枚举也有一些静态方法,valueOf(),将字符串变成该枚举的对象;values(),将枚举里的元素装入一个数组中。
枚举的对象获得:类.元素,例如,TrafficLamp.RED。
枚举的构造方法特点:
1. 构造方法必须位于元素列表之后。成员变量和成员方法都要放在元素后面,否则报错。
2. 私有化构造方法。
3. 当枚举被调用,内部的元素(静态变量)会都被加载进内存,然后逐个调用空参数的构造函数创建相应的对象。
4. 调用带参数的构造函数创建对象:在元素后面加上括号,括号内传入构造函数的参数。例如,SUN(1)。由此可见,如果括号内没有参数,调用空参数构造函数。
访问修饰符:外部类:public和默认。内部类:public、private、protected和默认,和成员函数平级,访问修饰符也一样。
匿名内部类的另类用法:{}及其里面的内容放在引用的后面,而不是对象的后面,例子如下。再者就是,子类对象可以调用父类的带参数的构造方法,例如,new data(30){};
当枚举只有一个成员是,可以当做一个单例的实现方式,比单例设计模式方便,只要列出一个元素即可,其他方法一样。
public enum TrafficLamp {//带有抽象的方法,但不用写出。
RED(30){//另类的匿名内部类使用方法。
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(5){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(40){
public TrafficLamp nextLamp(){
return