zoukankan      html  css  js  c++  java
  • mzy对于枚举的理解

    关于enum,其实就是简化了的class,功能就是提供一个个独立的、特定含义的常量!

    在JDK5.0之前我们想模拟enum的功能,只能使用自定义类的形式:

    1.首先私有化构造方法,让外部不能new对象

    2.在类内部new多个final的成员变量,让每个成员变量代表特殊含义(可以私有一个带参数的构造方法,提供一个私有属性,对外提供一个get方法)。

    如下:

    class Score {
    	private String s;
    	private Score(String s) {
    		this.s = s;
    	} // 私有化构造方法,不能让用户随意构造对象,固定了四个等级
    	
    	public String getS() {
    		return s;
    	}
    	public static final Score A = new Score("100-90"); 
    	public static final Score B = new Score("89-80");
    	public static final Score C = new Score("79-70");
    	public static final Score D = new Score("69-60");
    	public static final Score E = new Score("59-0");
    	@Override
    	public String toString() {
    		return "" + s + "";
    	}
    	
    }

    在JDK5.0之后,enum的的出现,更加的灵活:

    这里的A、B、C... 对应上面理解就比较容易了!

    enum Score {
    	A("100-90"), B("89-80"), C("79-70"), D("69-60"), E("59-0");
    	private String s; // 分数段
    	private Score(String s) {
    		this.s = s;
    	}
    	public String getS() {
    		return s;
    	}
    	// enum不能重写toString
    }
    

    同时,enum提供一个values方法,可以同时获得所有的属性!

    package b_enum;
    /**
     * 发现一个有意思的事情,在所有花括号后面加分号都不会报错!
     * 发现其实是可以加分号的,但是我们习惯省略了,因为花括号就已经是一个整体;
     * 是一段独立的内容了!
     * 所以一般我们省略分号,并不会这样去写:main() {}; class Test{};
     * @author mzy
     */
    public class Demo01 {
    	/*
    	 *  打印成绩:要求成绩等级 A B C D E
    	 *  只能是这个范围内的,不能有这五个等级之外的字母
    	 *  JDK5之前我们只能通过自定义类的形式:私有化构造来实现
    	 */
    	public static void main(String[] args) {
    		// System.out.println(Score.A.getS());
    		// System.out.println(Score.B.getS());
    		Score[] values = Score.values();
    		for(Score score : values) {
    			System.out.println(score);
    		}
    	}
    }


  • 相关阅读:
    pychram 2018-01 安装pyQT5报错
    pyqt 8行内就可以跑一个浏览器
    sql server无log ldf日志文件附件mdf数据库重新生成ldf日志文件
    解决Specifying a namespace in include()withou providing an app_name
    Java 连接池的工作原理(转)
    使用from __future__ import unicode_literals时要注意的问题
    详细介绍Redis的几种数据结构以及使用注意事项(转)
    再谈Redis应用场景(转)
    Redis的LRU机制(转)
    深入理解Redis主键失效原理及实现机制(转)
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053410.html
Copyright © 2011-2022 走看看