在Java中,枚举类型本质上其实就是一个类,枚举中的常量都是该枚举类型的实例。虽然枚举类型有一些限制,比如不能再派生出子枚举类型,不能调用构造函数,不过我们仍然可以在枚举类型中定义构造函数、字段和方法。
java枚举类的构造函数为何只能是私有的。因为枚举类型是单例模式的。你需要实例化一次,然后再整个程序之中就可以调用他的方法和成员变量了。
枚举类型使用单例模式是因为他的值是固定的,不需要发生改变。
例如:
public class Test {
enum Weekday {
SUNDAY("SUN"), MONDAY("MON"), TUESDAY("TUE") {
public void someMethod() {
System.out.println("TUESDAY");
}
};
private String abbr;
private Weekday(String abbr) {
this.abbr = abbr;
}
private Weekday() {
}
public String getAbbreviation() {
return abbr;
}
//很方便的一种用法
public boolean isSunday() {
return this == SUNDAY;
}
public boolean isMonday() {
return this == MONDAY;
}
public boolean isTuesday() {
return this == TUESDAY;
}
public void someMethod() {
System.out.println("DEFAULT");
}
}
/**
* @param args
*/
public static void main(String[] args) {
Weekday sunday = Weekday.SUNDAY;
String sundayName = sunday.name();
sunday = Weekday.valueOf(sundayName);
System.out.println("sundayName:" + sundayName + " isSunday:"
+ sunday.isSunday());
sunday.someMethod();
Weekday.TUESDAY.someMethod();
}
上面的代码中,Weekday枚举有一个构造函数,这个构造函数是不能通过new语句调用的,不过可以在声明常量的时候进行调用,只要要常量后面加上括号并传递参数进去就可以了,这样不同的常量对象都有了不同的属性值,这个值存储在字段abbr中。另外这个枚举类型还定义了方法,在获得了对某个常量的引用后,就可以调用它的getAbbreviation()方法。例如:
System.out.println(Weekday.SUNDAY.getAbbreviation());
枚举类型还有一个特殊的功能,就是在声明常量的时候可以重写枚举中的方法,从而达到某种“多态”的效果.
Weekday.TUESDAY.someMethod();打印"TUESDAY",其他的打印”DEFAULT“。
总的运行结果如下:
sundayName:SUNDAY isSunday:true
DEFAULT
TUESDAY
分享到:
相关推荐
在 Java 语言中,没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有 int 常量。这种方式称作 int 枚举模式。例如,定义一个 Season 类,使用 public static final int 来定义四季: ```java public ...
Java语言中没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。这被称作int枚举模式。这种模式存在两个问题:类型安全性和可读性。 首先,int枚举模式不是类型安全的。例如,我们设计一个函数,...
枚举类的 API 参考 JDK api 1.8.CHM,可以看到枚举类的常用 API 如下: 1. name() 方法:返回此枚举常量的名称,与其枚举声明中声明的完全相同。大多数程序员应该使用 toString() 方法,因为 toString 方法可能会...
我们在查数据的时候,又能将数据库的数字转换成java枚举类,在处理完对应的业务逻辑之后,将枚举和枚举类对应的展示信息一起传递到前台,前台不需要维护这个枚举类和展示信息的对应关系,同时展示信息支持国际化处理...
Java 枚举类型 enum 是 Java 语言中的一种特殊的数据类型,自从 JDK 1.5 引入枚举类型以来,它已经成为了 Java 程序员中的一种常用工具。本文将对 Java 枚举类型 enum 进行详解,并介绍其使用方法。 一、枚举类型的...
性能优化:由于使用了枚举而非动态查找,`MimeTypeEnum.java`在性能上表现优异,即使是高并发场景下也能保持稳定响应。 适用人员:Java开发者,及需要手动维护一份MIME类型列表但又不想耗时的 示例代码:String mime...
Java中的枚举是一种强大的工具,它提供了一种安全的方式来表示有限的、预定义的值集合。在Java中,枚举是通过`enum`关键字来定义的,它实际上是一种特殊的类,具备了一些内置的特性,使得枚举在处理固定的、有限的...
Integer类中还包含了一些常用的方法,例如: - `valueOf(String str)`:返回String型参数值的Integer对象。 - `parseInt(String str)`:返回与String型参数值等价的int值。 - `toString()`:返回表示Integer值的...
- `toString`:返回枚举实例的名称,这通常是枚举常量的字符串形式,比`name`方法更常用。 - `valueOf`:根据枚举名称字符串返回对应的枚举实例。 此外,枚举可以包含私有构造函数和方法,以便初始化枚举实例和实现...
这种方法简洁且易于理解,是处理枚举集合的常用方式。 总之,Java的枚举类型提供了丰富的特性,包括嵌套枚举、接口实现、自定义方法和枚举映射等。通过这些技巧,开发者可以更好地组织枚举常量,增加代码的可读性...
在Java编程中,单例模式是一种常用的创建型设计模式,它保证了类只有一个实例,并提供一个全局访问点。单例模式常用于管理共享资源,如配置文件的读取。本篇将详细介绍如何利用枚举(enum)来实现单例模式,并结合`...
Java枚举是编程语言中的一个强大特性,它在很多场景下优于传统的整数常量或字符串常量,提供了更安全、类型安全以及可维护性更好的方式来定义一组固定的值。以下将详细介绍Java枚举的各个方面。 1. 枚举概述: 在...
单例设计模式案例演示 单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例...枚举的定义和使用 工厂设计模式案例演示 动态代理案例演示
在Java语言中,一种常用的定义固定常量的方式是使用`enum`(枚举)类型。本文将详细介绍如何在Java中使用枚举类型,并通过一个具体的例子来展示其优势。 #### 二、枚举类型概述 **枚举类型**是一种特殊的类,用于...
接下来,我们详细讨论`Collection`接口及其常用方法。`Collection`接口提供了许多基本操作,如添加元素、删除元素、检查元素存在性等。例如,`add(E e)`方法用于向集合中添加一个指定的元素,`addAll(Collection c)`...
实际上,Java编译器会自动调用`ordinal()`方法获取枚举成员的位置编号,然后根据该编号进行匹配。 #### 五、遍历枚举类型 枚举类型还提供了一种方便的方式来遍历所有枚举成员,即通过静态方法`values()`。尽管在...
9. **枚举**:Java枚举是一种特殊的类,允许创建有限数量的实例,常用于表示固定集合中的选项。枚举可以有方法,也可以实现接口,增强了代码的可读性和安全性。 10. **功能接口与Lambda表达式**:Java 8引入了函数...
计算机后端-Java-Java核心基础-第23章 枚举类与注解 07. Enum类中的常用方法.avi
在Java开发中,以下是一些常用API的知识点: 1. **集合框架**:Java集合框架是处理对象集合的一系列接口和类,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。这些...