java中的枚举enum

个人感觉,枚举类和普通的java类区别不是很大,接下来简单的回忆一下枚举类

1.创建一个枚举类 Gender

public enum Gender {
  
}

 和普通的测试类 GenderTest

public class GenderTest {

}

2.枚举类介绍

①在枚举类中添加两个变量

public enum Gender {
    male,female;
}

  在测试类中直接输出

@Test
public void test(){
    Gender male = Gender.male;
    System.out.println(male);
}

最后输出  

male

其实,枚举类中的male,female相当于自动给你new 了两个Gender实例。枚举类中的构造函数是私有的,即不能使用 Gender male = new Gender();

这样普通java类创建实例的方法。

②给枚举类加方法

在Gender枚举类中添加方法

public int getAge(){
    return 1;
}

在测试类中

@Test
public void test2(){
    Gender male = Gender.male;
    System.out.println(male.getAge());
}

输出   1

③用构造器给参数赋值

public enum Gender {
    //和new一样,要给构造器传值
    male("male-text"),female("female-text");
    
    //带参数构造器 覆盖默认构造器
    private Gender(String text){
        this.text=text;
    }
    
    private String text;
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
}

测试

@Test
public void test3(){
    Gender male = Gender.male;
    System.out.println(male.getText());
}

输出    male-text

④添加抽象方法

public enum Gender {
    //和new一样,要给构造器传值
    //必须要实现抽象方法
    male("male-text"){
        public int getAge(){
            return 20;
        }
    },female("female-text"){
        public int getAge(){
            return 22;
        }
    };
    
    //带参数构造器 覆盖默认构造器
    private Gender(String text){
        this.text=text;
    }
    
    private String text;
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    
    //添加一个抽象方法
    public abstract int getAge();
    
}

测试

@Test
public void test4(){
    Gender male = Gender.male;
    System.out.println(male.getAge());
}

输出   20

3.总结

从上面的测试可以看出,其实枚举类和普通类还是有很多共性的,或者说是特殊的普通类。

个人理解,肯定还有很多不足的地方。

原文地址:https://www.cnblogs.com/Iqiaoxun/p/5459759.html