zoukankan      html  css  js  c++  java
  • Java基础教程——枚举类型

    枚举类型

    枚举类型在JDK 5时引入。

    	enum WeekEnum {
    		MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
    	}
    

    Java的枚举类java.lang.Enum中,有:
    |--private final String name;(定义时可表意的标识符)
    |--private final int ordinal;(序数,从0开始)
    |--及对应的获取方法。

    public class Enum1Common {
    	enum WeekEnum {
    		MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
    	}
    	public static void main(String[] args) {
    		System.out.println("枚举类型标识符:" + WeekEnum.FRIDAY);
    		for (WeekEnum day : WeekEnum.values()) {
    			System.out.print("直接输出:" + day);// toString()
    			System.out.print("	 name:" + day.name());
    			System.out.println("	 ordinal:" + day.ordinal());// 序数
    		}
    	}
    }
    

    枚举类型标识符:FRIDAY
    直接输出:MONDAY name:MONDAY ordinal:0
    直接输出:TUESDAY name:TUESDAY ordinal:1
    直接输出:WEDNESDAY name:WEDNESDAY ordinal:2
    直接输出:THURDAY name:THURDAY ordinal:3
    直接输出:FRIDAY name:FRIDAY ordinal:4
    直接输出:SATURDAY name:SATURDAY ordinal:5
    直接输出:SUNDAY name:SUNDAY ordinal:6

    *枚举是“特殊的类”

    枚举类型是一种“特殊的类”,
    它可以有自己的属性和方法(包括构造方法)。
    枚举类的构造器只能使用private访问控制符;
    如果省略访问控制符,还是private。

    // 枚举类也可以有变量和方法
    public class Enum2Member {
    	public static void main(String[] args) {
    		System.out.println(GenderEnum.MALE + ":" + GenderEnum.MALE.getLabel());
    		// Enum.valueOf():获取指定枚举类的枚举值
    		GenderEnum g = Enum.valueOf(GenderEnum.class, "FEMALE");
    		System.out.println(g + ":" + g.getLabel());
    	}
    }
    enum GenderEnum {
    	MALE("男"), FEMALE("女");// 必须第一行
    	// ----------------------------------
    	// 枚举类的属性值应该使用private final修饰
    	private final String label;
    	// 枚举类一旦写带参构造器(必须private),列出枚举值时必须传参
    	private GenderEnum(String label) {
    		this.label = label;
    	}
    	public String getLabel() {
    		return this.label;
    	}
    }
    
    MALE:男
    FEMALE:女
    

    *枚举类可以实现接口

    // 枚举类可以继承接口
    public class Enum3Impl {
    	public static void main(String[] args) {
    		System.out.println(ImplEnum.PLUS.eval(3, 2));
    		System.out.println(ImplEnum.MINUS.eval(3, 2));
    	}
    }
    interface IOperation {
    	double eval(double x, double y);
    }
    enum ImplEnum implements IOperation {
    	PLUS {
    		public double eval(double x, double y) {
    			return x + y;
    		}
    	},
    	MINUS {
    		public double eval(double x, double y) {
    			return x - y;
    		}
    	}
    }
    
    5.0
    1.0
    

    *枚举类的抽象方法

    枚举类本身可以定义抽象方法,由各枚举值实现。

    // 枚举类可以定义“抽象方法”,并由枚举值实现
    public class Enum4Abstract {
    	public static void main(String[] args) {
    		System.out.println(AbstractEnum.TIMES.eval(3, 2));
    		System.out.println(AbstractEnum.DIVIDE.eval(3, 2));
    	}
    }
    enum AbstractEnum {
    	TIMES {
    		public double eval(double x, double y) {
    			return x * y;
    		}
    	},
    	DIVIDE {
    		public double eval(double x, double y) {
    			return x / y;
    		}
    	};
    	// 定义抽象方法(必须在枚举值之后定义)
    	// 由各枚举值 提供 具体实现
    	public abstract double eval(double x, double y);
    }
    
    6.0
    1.5
    
  • 相关阅读:
    阿里安全归零实验室招聘各路大牛!offer好说!
    露脸!钉钉通过SOC2隐私性原则审计,安全和隐私保护达超一流国际标准
    BAT齐聚阿里安全-ASRC生态大会:呼吁联合共建网络安全白色产业链
    v3-4_-vict-、-vinc-胜利,征服
    Grammar01 语法七要素之一_词类
    Grammar00_英语学习铁律
    SpokenEnglish01_ When's it due?
    SpringBoot31 重识Spring01-环境搭建、Actuator监控、属性配置、多环境配置
    Shrio04 自定义Realm
    Shrio03 Authenticator、配置多个Realm、SecurityManager认证策略
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11182830.html
Copyright © 2011-2022 走看看