`
yizhihu
  • 浏览: 1164 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java Enumeration类的学习

阅读更多
Java 5.0新引进了一种类型:枚举类型。昨晚看了一下,语法还是比较复杂的,至少比C的枚举要复杂的很多,不过功能也强大了很多。具体语法请参见 JLS 8.9
1、定义一个功能简单的枚举类型,更定义一个简单的类很相似,例如
package  basic;
public   enum  Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
跟类定义一样,枚举类型可以单独放在一个文件里,当一个枚举类型用public修饰时,它对其他包可见,否则只对同一个包中的类可见,这和类定义是一样的。
标识符 MONDAY, TUESDAY等就称为枚举常量(enumeration constants)
每一个枚举常量被隐式的声明成Day的一个public、static成员,而且其类型为Day,亦就是说这些常量是self-typed的
2、下面的定义也是合法的:
package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY,
}

package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY,;
}

package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
但是当枚举类型有其他定义时,则分号;是必须的
3、声明、使用一个枚举类型:
(1)在同一个包中:

  BasicMainClass.java

(2)在不同包中:

  OtherMainClass.java

4、枚举类型的性质:(摘自o'relly 出版的 Java in A Nutshell 5th)

Enumerated types have no public constructor. The only instances of an enumerated type are those declared by the enum.

Enums are not Cloneable, so copies of the existing instances cannot be created.

Enums implement java.io.Serializable so they can be serialized, but the Java serialization mechanism handles them specially to ensure that no new instances are ever created.

Instances of an enumerated type are immutable: each enum value retains its identity. (We'll see later in this chapter that you can add your own fields and methods to an enumerated type, which means that you can create enumerated values that have mutable portions. This is not recommended, but does not affect the basic identity of each value.)

Instances of an enumerated type are stored in public static final fields of the type itself. Because these fields are final, they cannot be overwritten with inappropriate values: you can't assign the DownloadStatus.ERROR value to the DownloadStatus.DONE field, for example.

By convention, the values of enumerated types are written using all capital letters, just as other static final fields are.

Because there is a strictly limited set of distinct enumerated values, it is always safe to compare enum values using the = = operator instead of calling the equals() method.

Enumerated types do have a working equals( ) method, however. The method uses = =finalso that it cannot be overridden. This working equals( ) method allows enumerated values to be used as members of collections such as Set, List, and Map. internally and is

Enumerated types have a working hashCode() method consistent with their equals( )equals(), hashCode( ) is final. It allows enumerated values to be used with classes like java.util.HashMap. method. Like

Enumerated types implement java.lang.Comparable, and the compareTo() method orders enumerated values in the order in which they appear in the enum declaration.

Enumerated types include a working toString( ) method that returns the name of the enumerated value. For example, DownloadStatus.DONE.toString( ) returns the string "DONE" by default. This method is not final, and enum types can provide a custom implementation if they choose.

Enumerated types provide a static valueOf( ) method that does the opposite of the default
toString( ) method. For example, DownloadStatus.valueOf("DONE") would return DownloadStatus.DONE.

Enumerated types define a final instance method namedordinal()that returns an integer for each enumerated value. The ordinal of an enumerated value represents its position (starting at zero) in the list of value names in the enum declaration. You do not typically need to use the ordinal( ) method, but it is used by a number of enum-related facilities, as described later in the chapter.

Each enumerated type defines a static method named values( ) that returns an array of enumerated values of that type. This array contains the complete set of values, in the order they were declared, and is useful for iterating through the complete set of possible values. Because arrays are mutable, the values( ) method always returns a newly created and initialized array.

Enumerated types are subclasses of java.lang.Enum, which is new in Java 5.0. (Enum is not itself an enumerated type.) You cannot produce an enumerated type by manually extending the Enum class, and it is a compilation error to attempt this. The only way to define an enumerated type is with the enum keyword.

It is not possible to extend an enumerated type. Enumerated types are effectively final, but the final keyword is neither required nor permitted in their declarations. Because enums are effectively final, they may not be abstract.

Like classes, enumerated types may implement one or more interfaces.
分享到:
评论

相关推荐

    java集合深度学习

    在深入学习Java集合时,我们需要特别关注HashMap和HashTable这两个重要的类。虽然它们都是用于存储键值对的数据结构,但它们在设计和使用上有显著的区别。 HashMap是Java 1.2引入的,它是Map接口的一个实现,提供了...

    Java 实例 - 使用 Enumeration 遍历 HashTable源代码+详细指导教程.zip

    通过本教程的源代码实例,你可以更直观地理解`HashTable`和`Enumeration`的使用方式,这对于学习Java基础和提升编程技能非常重要。记得实际动手操作,编写并运行代码,这样能更好地巩固你的理解。同时,查阅相关的...

    javaAPI学习总结

    Java API 学习总结 Java 是一种广泛使用的面向对象的编程语言,它的API(Application Programming Interface)提供了大量的类和接口,使得开发者能够高效地构建各种应用程序。本文将重点关注Java的基础知识,特别是...

    Java API学习.pdf

    Java API是Java编程的...通过深入学习和理解这些类和接口,开发者可以充分利用Java平台的强大功能,创建高效、健壮的应用程序。在实际开发中,查阅JDK的帮助文档是非常有用的,它包含了Java API的详细说明和使用示例。

    java学习之路(转)

    5. Java集合框架:熟悉Java集合框架,掌握Set、List、Map、Iterator和Enumeration接口及其各自实现类(例如,HashSet、ArrayList、Vector、HashMap、HashTable、ArrayList中的ArrayList、Vector等),了解它们的特点...

    Thinking In Java学习之50问

    - **枚举(enumeration)**:一种特殊的类,用来封装一组固定的常量值,提供了比常量更安全、更灵活的解决方案。 ### 6. 方法重写与重载 - **重写(Overriding)**:子类覆盖父类的方法,使得子类可以提供与父类相同...

    JavaAPI学习[参照].pdf

    在`java.util`包中,`Arrays`类提供了操作数组的各种静态方法,`Vector`是动态数组,`Date`用于表示日期和时间,`Enumeration`接口则用于遍历集合元素。 随着Java的发展,API会不断更新和扩展,新的包和子包会被...

    java.util.pdf

    标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和...学习和理解java.util包中的每一个类和接口,对于Java开发者来说是基础且必不可少的。

    JAVA3D学习系列(17)--动画的生成(下)

    本文将详细讲解 JAVA3D 学习系列中动画的生成部分,主要介绍 TransparencyInterpolator 对象的使用和实现动画效果。 一、TransparencyInterpolator 对象 TransparencyInterpolator 对象是一个 JAVA3D 中的核心对象...

    Java开发详解.zip

    031309_【第13章:Java类集】_foreach及Enumeration接口笔记.pdf 031310_【第13章:Java类集】_Map接口笔记.pdf 031311_【第13章:Java类集】_Map接口使用的注意事项笔记.pdf 031312_【第13章:Java类集】_...

    JAVA类中的常用包

    Java 类中的常用包是 Java 编程中不可或缺的一部分,它们为开发者提供了丰富的功能和类库,使得编写高效、可靠的程序成为可能。...学习和掌握这些包中的类和接口,对于深入理解和使用 Java 编程语言至关重要。

    专题之Java学习书籍.pdf

    Java集合框架提供了一整套接口和类来存储和操作对象集合,并且还包括了迭代器(Iterator)、比较器(Comparator)等概念,以及枚举(Enumeration)类型。通过集合框架,程序员可以高效地处理数据集合,而不需要担心...

    获得网卡MAC地址java类

    通过阅读和理解这个类的源码,我们可以学习到更多关于Java系统信息获取的技巧,同时也可以了解如何在实际项目中处理这类问题。 总的来说,获取MAC地址是Java系统编程中的一个基础任务,涉及到对网络接口和系统管理...

    JAVA语言学习课件

    Java语言学习课件涵盖了许多核心概念,其中包括命令行参数、系统属性、I/O操作以及Collection接口系列等内容。这些是Java编程中的基础且重要的知识点。 首先,让我们深入了解一下命令行参数。在启动Java应用程序时...

    疯狂JAVA讲义

    学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种...

    Java学习资料-核心知识

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。Java的核心知识是每个开发者必须掌握的基础,这包括了对Java...因此,对于每一个Java学习者来说,深入学习和实践这些核心知识是非常必要的。

    java经典基础知识,代码理论相结合,!看一遍牢固java知识..

    9. **Java第九章**:可能涉及枚举类型(Enumeration)、注解(Annotation)以及反射(Reflection),这些都是Java高级特性,枚举用于定义一组固定的值,注解用于提供元数据,反射则允许程序在运行时检查类和接口的信息。...

    Java学习课件

    10. **JAVA程序设计第12章**:可能讲解Java高级特性,如枚举(enumeration)、注解(annotations)、泛型(generics)、反射(reflection)以及Lambda表达式等。 这些章节覆盖了Java编程的基本到进阶的知识点,对于初学者和...

    java学习路线

    Java学习路线是一个系统的过程,涵盖了从基础到高级的各种技术领域。以下是一个详细的Java学习路径,帮助你有效地掌握这门语言及其在企业级开发中的应用。 **1. Java基础(重点)** - **Java语法**:理解基本的...

Global site tag (gtag.js) - Google Analytics