Effective Java之枚举类

  随着Effective Java这本书看的越来越多,发现在平时使用Java时犯了很多明显的错误,自己平时知道一点但缺少使用的也越来越多。

  关于枚举类,书中的建议是用枚举类替代传统的静态常量,平时,如果一类数据用不同的数值表示,我正常的做法是写一串const static常量来表示,但看了这本书后发现,这样的表示方法虽然可以达到自己的目的,但是存在一些隐患,比如类型安全,还有,在使用上述方法区分不同的类型时,某一个具体的类型中的方法是在外面用过判断然后调用的,在这种情况下,代码就变得不是很漂亮。

  Java中有四种基本数据类型,分别是基本数据类型、数组类型、类类型以及接口类型,枚举类应该是属于类类型,既然枚举类属于类类型中的一种,那么枚举类应该拥有类类型的某些特性,比如构造方法、成员变量、成员方法等,这也就是的枚举类型不只拥有用来区分不同类别的功能,甚至可以为不同的类型添加自己的方法,当然要实现某个接口才行,以及实现一些这些类型的公共方法,所以,用枚举类型来表示不同的类型,会比用不同的static常量灵活很多。

  枚举类型和普通的类类型之间的区别应该就在于,枚举类型中的每一个对象都是单例的,所以,在单例模式中,最受推荐的单例模式就是通过枚举实现的单例方式了。当然枚举类型也不是在任何情况下都比静态常量有优势的,比如在资源受限的情况下,还是采用传统的方式比较好一点。

时间: 2024-10-18 13:55:57

Effective Java之枚举类的相关文章

【总结】Effective java经验之谈,类与接口

转载请注明出处:http://blog.csdn.NET/supera_li/article/details/44940563 Effective Java系列 1.Effective java经验之谈,创建和销毁对象 2.Effective java经验之谈,泛型 3.Effective java经验之谈,类与接口 4.Effective java经验之谈,通用方法 5.Effective java经验之谈,枚举,注解,方法,通用设计,异常 6.Effective java经验之谈,并发编程

JAVA学习--枚举类的使用

* 一.枚举类  * 1.如何自定义枚举类  * 2.如何使用enum关键字定义枚举类  *     >常用的方法:values() valueOf(String name)  *     >如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同.(相当于让每个对象重写抽象方法) 1 //普通枚举类 2 class Season{ 3 //1.提供类的属性,声明为private final 4 private final String seasonName; 5 p

Java 之枚举类

在某些情况下,一个类的对象是有限而且是固定的,比如季节类,它只有4个对象.这种实例有限而且固定的类,在Java里被称为枚举类. 在早期,可能会直接使用简单的静态常量来表示枚举类,例如: public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FAIL = 3; public static final int SEASON

疯狂java笔记-枚举类

1 //手动实现枚举类 2 //步骤 3 1.通过private将构造器隐藏起来 4 2.把这个类的所有可能的实例都使用public static final修饰的类变量来保存 5 3.如果有必要,可以提供一些静态方法,允许其他程序根据特定的参数来获取与之匹配的实例 6 public class Season{ 7 //把Season类定义成不可变的,将其Field也定义成final 8 private final String name; 9 private final String desc

Java之枚举类的基本用法

创建枚举类 package com.ywlaker.enums; /** * @功能描述:季节枚举类 * @author yang.wei * @time 2015年9月1日 上午11:56:23 * @version 0.0.1 */ public enum Season { SPRING("春天","spring"), SUMMER("夏天","summer"), AUTUMN("秋天","a

Effective java经验之谈,类与接口

本章描述的是,自己在做系统重构的时候,阅读的章节,给自己在架构方面提供很大帮助.总结出一些干货分享一下啊啊啊~~主要应用场景是编写类与接口的时候需要注意的问题.每一章不一定按照顺序更新.欢迎拍砖补充. 1.类与成员的访问权限最小化.Public staticfinal 如果指向的是对象(数组也是对象),那么往往是错误的写法,[private static final  A=指向该对象,同时采用public static final指向A.clone()(A的副本)][private static

Java之枚举类

有时候,变量的取值只在一个有限的集合内. 例如:pizza的大小只有小.中.大和超大这四种尺寸.当然,可以将这些尺寸分别编码为1.2.3.4或者S.M.L.X.但这样存在着一定的隐患.在变量中很有可能保存的是一个错误的值(如0和m). 针对这种情况,可以自定义枚举类型.枚举类型包括有限个命名的值.例如, enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}; 现在,可以声明这种类型的变量: Size s = Size.MEDIUM; Size类型的变量只能存储到这个

effective java 读书笔记——类和接口

上周因为准备考试等一堆原因,没空看书,今天补上一点. 类和接口是java程序设计语言的核心,它们也是java语言的基本抽象单元,java语言提供了很多强大的基本元素,供程序员设计类和接口,这一章讲的是一些指导原则,可以设计出更加有用,健壮和灵活的类和接口. 第1条:使类和成员的可访问性最小化 首先说一个概念:模块之间只能通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念叫做“信息隐藏”,或者“封装”.(对,这就是面向对象的中封装继承多态三大特性之一的封装) 信息隐藏之所

Java一个枚举类的2种实现。

实现方式一: public enum Operation { PLUS, MINUS, TIMES, DIVIDE; double apply(double x, double y) { switch (this) { case PLUS: return x + y; case MINUS: return x - y; case TIMES: return x * y; case DIVIDE: return x / y; } throw new AssertionError("Unknow o