枚举类
枚举类里面写的是对象,你也可以在下面写上成员方法或变量,这里面的对象可以调用这些方法,也可以说枚举类是用来存放固定个数的对象的。
格式:
public enum 枚举类名{
}
注意:枚举不能被继承,构造方法不能是公共的。
代码演示
public enum Demo8 {
//枚举对象,直接写名字就可以,而且直接必须使用逗号,还有最重要的一点是所有枚举对象的类型必须一致,后面的括号表示构造方法有参,并且是字符串类型,当然也可以不带,那就表示无参
sex("male"),name("jack");
//声明一个私有变量
private String adrress;
//构造方法必须是私有的,每当初始化时,通过这个可以打印出括号里的字符串
Demo8(String s) {
System.out.println(s);
}
public int getAge(int age){
return age;
}
public String getAdrress(String adrress){
this.adrress=adrress;
return adrress;
}
}
public class Demo8Test {
public static void main(String[] args) {
//方法可以得到枚举对象的序号,从零开始
System.out.println(Demo8.name.ordinal());
//values方法可以得到枚举类的所有对象返回一个枚举类数组
Demo8[] values = Demo8.values();
for (Demo8 value : values) {
System.out.print(value.name()+" ");
}
System.out.println("");
//把枚举对象转变为字符串
System.out.println(Demo8.sex.name());
//虚拟机中的枚举对象只会有一份,把一个相同名字的字符串转化为枚举类型,看一下结果
System.out.println(Demo8.valueOf("name") == Demo8.name);
//用枚举类里的对象调用枚举类里的方法
System.out.println(Demo8.name.getAdrress("西海岸423号"));
System.out.println(Demo8.sex.getAge(10));
}
}
结果
male
jack
1
sex name
sex
true
西海岸423号
10
从以上结果中可以看出,当对象初始化时,是一起初始化的,并且从这个true中说明了,枚举的对象只会有一份,因此枚举枚举类中的对象名字不能相同。