`
pleasetojava
  • 浏览: 729424 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java枚举类型的发展历程

阅读更多
在JDK 5之前没有枚举类型,为了列举某些具有相同属性的有限个对象,JDK通过定义一些基本数据类型的常量来代表特殊的含义,往往用整型数据常量。如在java.util.Calendar中定义JANUARY = 0代表一月,FEBURARY = 1代表二月,依次类推。用这种方式会有很大的局限: 一是直接使用数值0并不会明显告诉我们是一月份; 二是一月份本不是简单的数值,它是一个对象,它至少应包含一月份应该有31天这样一个属性。
如何解决这样的问题呢?列举出具有相同属性的有限个对象。要解决这样的问题,我们创建的类型不能在类型体之外创建对象,有限个对象必须在类型体中创建。解决方案是类型的构造方法是受保护的,通常定义为私有(private);有限个对象声明成静态对象常量。这使我们想起单例模式(singleton)的实现。这种技巧在Hibernate中有非常广泛的使用,如类型LockMode, FlushMode等。以下定义的是在JDK 5前解决枚举类型的一个最简单的例子,就是定义一年中的月份(在这里暂时忽略平年与闰年的差别)
package com.kettas.corejava;
public class Month {
private int days;//记录一个月的天数
public static final Month JANUARY = new Month(31);//静态常量对象,含义比0更准确
public static final Month FEBURARY = new Month(28);
。。。
private Month(int days){
this.days = days;
}
public int getDays(){
return days;
}
}
在JDK 5中为了解决以上的问题,定义了新的类型enum,我想其内部实现的机制应该与上面的解决方案有相似的思想。用JDK 5中enum定义如上类型如下:
package com.kettas.corejava;
public enum Month{
JANUARY(31), FEBURARY(28);
private int days;
Month (int days){
this.days = days;
}
public int getDays() { return days; }
}
分享到:
评论

相关推荐

    20年Java发展历程(1995-2015)

    另外,对字符串的操作也得到了加强,比如添加了`String.join()`方法用于连接字符串数组,以及`switch`语句支持字符串,让开发者在处理枚举类型和字符串时有了更多的选择。 在并行和并发处理方面,Java 7推出了Fork/...

    java发展历程1.zip

    Java发展历程详解 Java,一种广泛使用的面向对象的编程语言,由James Gosling在1991年于Sun Microsystems公司创立,至今已有三十多年的历史。Java的设计理念是“一次编写,到处运行”(Write Once, Run Anywhere)...

    java发展历程

    - **J2SE Kestrel**:此版本中,Java平台获得了显著增强,包括Java 2 Platform, Standard Edition(J2SE)5.0的发布,该版本引入了泛型、枚举类型、自动装箱和拆箱等功能。 - **J2SE Merlin**:Merlin版本进一步优化...

    01.Spring框架简介_spring_spring发展历程_

    随后的2006年,Spring 2.0带来了重大改进,支持JSR-250注解、Java 5的枚举类型以及更多模块化设计。2009年,Spring 3.0发布,全面支持Java EE 6,增加了对RESTful服务、Groovy的支持,并引入了Spring Expression ...

    java包 6.0

    这个版本在Java技术的发展历程中扮演了关键角色,提供了许多新特性和改进,旨在提升性能、稳定性和安全性。 首先,Java 6.0引入了更高效的JVM(Java虚拟机),它采用了新的垃圾回收算法,优化了内存管理和多线程...

    java和java虚拟机发展史思维导图

    Java和Java虚拟机(JVM)的发展历程是一个充满创新和技术进步的故事,它们共同塑造了现代软件开发的格局。本文将深入探讨这两个核心概念的历史、重要里程碑以及对编程界的影响。 Java语言自1995年发布以来,已经...

    Java简介和发展Java简介和发展.doc

    Java的发展历程见证了其不断进化的过程。从1996年的JDK1.0,到2004年的Java SE 5.0(J2SE1.5),再到2010年的JDK7.0,每个版本都引入了重要的新特性和改进,例如Java SE 5.0引入了泛型和枚举,提高了代码的类型安全...

    Java JDK 5.0学习笔记

    Java JDK 5.0是Java发展历程中的一个重要里程碑,它的发布带来了许多创新特性和改进,极大地提升了开发效率和代码质量。本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java ...

    java 发展史

    Java发展历程始于1991年,当时Sun公司的James Gosling领导的绿色计划旨在创造一种能在消费电子产品上运行的分布式系统。最初,项目组使用C++,但后来由于C++的局限性,Gosling着手创建一种新语言,这就是Java的雏形...

    Java发展史_&_Java9、10新特性

    通过回顾Java的发展历程以及详细介绍Java 9的新特性,我们可以看出Java语言一直在不断进步,旨在提高开发者的生产力和应用程序的性能。模块化系统的引入尤其值得一提,它为Java的应用场景带来了革命性的变化,使其...

    java api (中文)

    这个中文文档针对的是Java 1.7版本,也就是Java 7,它是Java发展历程中的一个重要里程碑,引入了许多新特性、改进和优化。 在Java API中,我们可以找到各种类、接口、枚举和异常,这些都是Java语言的基础构建块。...

    java的jre1.5

    JRE1.5在Java的发展历程中具有里程碑意义,因为它引入了一系列显著的改进和新特性,对提升性能、增强安全性和优化开发流程产生了重大影响。 首先,JRE1.5,也被称为Java 5.0,引入了泛型(Generics)。泛型允许...

    Java发展史

    Java语言发展史是一个深入探讨Java编程语言从诞生到如今演进历程的主题。Java,由James Gosling在1995年在Sun Microsystems公司领导开发,最初被设计为一种嵌入式设备上的编程语言,但其跨平台、面向对象的特性使其...

    魔乐 JAVA 魔乐课堂实战系列

    - **第三阶段(发展期):**从2004年的JDK 1.5到2009年的JDK 1.7,这一时期Java引入了大量的新特性,如泛型、自动装箱/拆箱、枚举类型、注解等,大大增强了Java语言的功能性和灵活性。 #### 三、Java生态系统 Java...

    java jdk 1.5 windows

    Java JDK 1.5,也被称为Java 5.0,是...总的来说,Java JDK 1.5是Java发展历程中的一个重要里程碑,引入了许多对后续版本有深远影响的特性。对于那些需要维护使用Java 1.5的老项目,理解并熟练运用这些特性至关重要。

    java语言教程

    - **2004年9月30日:** JDK 1.5发布,更名Java SE 5.0,引入了泛型、枚举类型等新特性。 - **2006年12月:** Sun公司发布了Java Runtime Environment (JRE) 6.0。 #### 二、Java编程语言的定义 **2.1 Java的多重...

    c++--++==java

    4. **2004年**,Java 5引入枚举类型、泛型和注解等重要特性。 5. **2009年**,甲骨文公司收购Sun Microsystems,接管Java的开发。 6. **2014年**,Java 8发布,引入Lambda表达式和Stream API,极大地提高了代码的...

    JVM历史发展和内存回收笔记

    4. **Java 5.0与泛型**:2004年,Java 5.0引入了泛型、枚举、自动装箱拆箱等新特性,对JVM的类型系统进行了扩展。 5. **Java 6与并行GC**:2006年,Java 6增强了垃圾回收器,引入了并行和并发的垃圾回收策略,提升...

Global site tag (gtag.js) - Google Analytics