1.枚举类型编写类

package EnumTest;

public enum  FoodSelect {
    DESERT(1,"甜点"), DRINK(2,"饮料"), NOODLES(3,"面条");
    private int code;
    private String name;
    private FoodSelect(int code,String name){ //枚举的构造器总是私有的,声明其他类型的会报错!
        this.code = code;
        this.name = name;
    }
    public int getCode(){
        return code;
    }
    public String getName(){
        return name;
    }
    public void setCode(int code){
        this.code = code;
    }
    public void setName(String name){
        this.name = name;
    }
    public String toString(){
        return this.getName() + "--" + this.getCode();
    }
}

直接在类名那里标记这是个enum,然后可以写上相关的种类

并且在下面可以定义方法,定义常量等

并要写上构造器

在枚举的几种类型旁边需要用小括号标注下面会定义的常量的标号,如这里是code和name

主方法中:

package EnumTest;

public class Test {
    public static void main(String[] args) {
        System.out.println(FoodSelect.DESERT.getCode());
        System.out.println(FoodSelect.DRINK.getName());
    }
}

结果为:

1
饮料

 

2.枚举还可以实现接口

例如:

package enumTest;

public interface DayInterface {

    public String getDay();
}
package enumTest;

public enum MyDay implements DayInterface{
    
    MONDAY(1,"星期一"),THUSDAY(2,"星期二");//这个后面必须有分号
    
    private int code;
    private String name;
    private MyDay(int code,String name) {
        this.code = code;
        this.name = name();
    }
    
    public int getCode() {
        return code;
    }
    public String getName() {
        return name;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return this.getName()+"---"+this.getCode();
    }

    @Override
    public String getDay() {
        return this.getName();
    }
}

测试:

package enumTest;

public class Test {
    public static void main(String[] args) {
        System.out.println(MyDay.THUSDAY.getDay());
    }
}

结果:

THUSDAY

 

3.还可以使用接口组织枚举

package enumTest;

public interface Food {  
    enum Coffee implements Food{  
        BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
    }  
    enum Dessert implements Food{  
        FRUIT, CAKE, GELATO  
    }  
}

测试类:

package enumTest;

import enumTest.Food.Coffee;
import enumTest.Food.Dessert;

public class Test {
        
    public  static void main(String[] args) {  
        for (Dessert dessertEnum : Food.Dessert.values()) {  
            System.out.print(dessertEnum + "  ");  
        }  
        System.out.println();  
        //我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。  
        for (Coffee coffee : Food.Coffee.values()) {  
            System.out.print(coffee + "  ");  
        }  
        System.out.println();  
        //搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。  
        //还有就是个“多态”的功能吧,  
        Food food = Food.Dessert.CAKE;  
        System.out.println(food);  
        food = Coffee.BLACK_COFFEE;  
        System.out.println(food);  
    } 
}

结果:

FRUIT CAKE GELATO 
BLACK_COFFEE DECAF_COFFEE LATTE CAPPUCCINO 
CAKE
BLACK_COFFEE

 (注意:比较枚举类型的值的时候,不需要用到equals,直接使用==就可以)

 

4.例子

测试类:

package EnumTest2;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        var in = new Scanner(System.in);
        System.out.println("Enter a size:SMALL,MEDIUM,LARGE");
        String input = in.next().toUpperCase();
        Size size = Enum.valueOf(Size.class,input); 
     //Size.class,这里怎么理解呢?enum就是将很多个相似的类集中在一起
     //然后将size附上和input、class中相同的值 System.out.println(
"Size=" + size); System.out.println("abbre=" + size.getSize()); if (size == Size.LARGE){ System.out.println("Nice"); } } }

枚举类:

package EnumTest2;

public enum Size {
    SMALL("s"),MIDIUM("m"),LARGE("l");
    private String abbre;
    private Size(String abbre){
        this.abbre = abbre;
    }
    public String getSize(){
        return abbre;
    }
}

结果:

Enter a size:SMALL,MEDIUM,LARGE
large
Size=LARGE
abbre=l
Nice

 

 posted on 2021-03-11 16:11  又在化学楼迷路了  阅读(83)  评论(0)    收藏  举报