定义: 所谓枚举类型,就是用一组数量有限的标识符来表示一组连续的整型常数,使能够更清晰的表示出现实世界
枚举的用法:一些方法在运行的时候,需要的数据类型不是随意的,它是要在一个范围内有效的值,就可以用枚举来解决这个问题
语法格式定义
enum 枚举类的类名{
//先定义出 对应的 枚举值
//再来写方法
}
枚举的注意点:
1.枚举类型 是一个 特殊的 类 final class 枚举类名 extends java.lang.Enum
2.枚举类中 的 枚举值(man, woman) 默认修饰符 是 public static final
3.枚举类中的 枚举值 它的类型 是 本类类型 Sex类型的 对象
4.枚举类的构造方法 是 private修饰的, 枚举类 会自内部 自己构造枚举值
5.枚举类 是可以有成员变量的,但是只能通过枚举值 去访问枚举类型 的 实例成员变量
6.枚举类 构造的 枚举值对象,默认是无参构造的,但是你可以通过有参数的构造来构造他们, 这个有参构造 必须是 private修饰的
7.枚举类 也可以有抽象的方法, 但是注意的是 枚举值必须要实现抽象的方法
8.枚举值 必须是 枚举类中的 第一个语句
示例代码:public class Demo{
public static void main(String[] args) {
Student jack = new Student();
jack.setAge(33);
jack.setName("杰克");
jack.setSex(Sex.man);
Sex.man.value = "呵呵";
Sex.value1 = "haha";
System.out.println("jack 的 姓名 : " + jack.getName() + ", 性别是 : " + jack.getSex());
System.out.println("value : "+ Sex.man.value); // "hehe"
System.out.println("value : "+ Sex.woman.value); // null
System.out.println("value : "+ Sex.value1);
//Sex s = new Sex();
Sex.man.test();
Sex.woman.test();
Sex.man.test1();
Sex.woman.test1();
}
}
enum Sex{
//定义枚举值
man("男"){
public void test1(){
System.out.println("man 在 实现抽象方法");
}
}, woman("女"){
public void test1(){
System.out.println("woman 在 实现抽象方法");
}
}, renyao("人妖"){
public void test1(){
System.out.println("人妖 在 实现抽象方法");
}
};//特别注意大括号后面的逗号和分号
//成员变量
String value;
static String value1;
//行为 方法
//1.构造方法
private Sex(String value){
this.value = value;
}
public void test(){
System.out.println("这是枚举类型的 公开的普通方法 : " + this.value);
}
//声明了一个抽象方法
public abstract void test1();
}
class Student{
private String name;
private int age;
private Sex sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
}
遍历、switch 等常用操作
对enum进行遍历和switch的操作示例代码:
|
输出结果:
|
enum 对象的常用方法介绍
int
compareTo(E o)
比较此枚举与指定对象的顺序。
Class<E>
getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String
name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int
ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String
toString()
返回枚举常量的名称,它包含在声明中。
static <T extends Enum<T>> T
valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
总结
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
以上是我对java中枚举的部分总觉以及资料查找,若有错误,欢迎指正!