zoukankan      html  css  js  c++  java
  • JAVA 枚举类型


    # 枚举类型 (JAVA编程思想-学习笔记)

    关键字enum可以将一组具名的值的有限集合创建为一种新的类型。
    创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum。
    可以同时实现一个或多个接口。

    1、基本特性:

    values(),可以遍历enum实例,返回enum实例的数组,数组中的元素严格保持其在enum中声明的顺序。
    ordinal(),返回一个int值,这是每个enum实例在声明时的次序,从0开始。
    name(),返回enum实例声明时的名字。
    getDeclaringClass(),所属的enum类。

    每个enum元素都是enum类型的static final实例。

    2、向enum中添加新方法:

    添加自定义方法时,必须在enum实例序列的最后添加一个分号。同时,java要求必须先定义enum实例。
    enum中的构造器与方法和普通的类没有区别,除了有少许限制外,enum就是一个普通的类。

    public enum OzWitch{
    	// Instances must be defined first, before methods;
    	WEST("Miss Gulch"),
    	NORTH("Glinda"),
    	EAST("Wicked"),
    	SOUTH("Good);
    	
    	private String description;
    	
    	// Constructor must be package or private access;
    	private OzWitch(String description){
    		this.description = description;
    	}
    	
    	public String getDescription(){
    		return description;
    	}
    }
    // Compiled from 'OzWitch.java'
    abstract class OzWitch extends java.lang.Enum{
    	public static final OzWitch WEST;
    	public static final OzWitch NORTH;
    	public static final OzWitch EAST;
    	public static final OzWitch SOUTH;
    	...
    }

    3、常量相关的方法
    Java的enum有一个有趣的特性,即允许为enum实例编写方法,从而为每个enum实例赋予各自不同的行为。
    要实现常量相关的方法,你需要为enum定义一个或多个abstract方法,然后为每个enum实例实现该抽象方法。

    public enum ConstantSpecificMethod{
    	CLASSPATH{
    		String getInfo(){
    			return System.getenv("CLASSPATH");
    		}
    	},
    	VERSION{
    		String getInfo(){
    			return System.getenv("java.version");
    		}
    	};
    	abstract String getInfo();
    }

    例子中,每个enum实例具备自己独特的行为,enum实例似乎被当作其"超类"ConstantSpecificMethod来使用,
    在调用getInfo()方法时,体现出多态的行为。

  • 相关阅读:
    SPLAY,LCT学习笔记(五)
    SPLAY,LCT学习笔记(四)
    SPLAY,LCT学习笔记(三)
    NOI 2012 随机数生成器
    SPLAY,LCT学习笔记(二)
    SPLAY,LCT学习笔记(一)
    bzoj 1503 郁闷的出纳员
    bzoj 1112 poi 2008 砖块
    bzoj 1064 noi2008 假面舞会题解
    数论知识点总结(noip范围)
  • 原文地址:https://www.cnblogs.com/null2/p/12330937.html
Copyright © 2011-2022 走看看