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);
    		}
    	}
    }


  • 相关阅读:
    远程推送(个推)
    transform3D实现翻页效果
    启发式搜索 A*算法的OC 实现
    IOS 高级开发 KVC(二)
    IOS 高级开发 KVC(一)
    IOS 应用程序启动加载过程(从点击图标到界面显示)
    堆排序的OC实现
    iOS 高级开发 runtime(三)
    IOS 高级开发 runtime(二)
    RxSwift
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053410.html
Copyright © 2011-2022 走看看