JDK1.5开始加入枚举新特性,在开发中有时会遇到需要一些数据集,而这些数据集是固定的几个值,为了让用到的变量只能是这些固定的几个值。枚举就发挥了作用。以便提高开发效率,增强程序规范。
1.普通枚举
public class TestEnum {
/*普通枚举*/
public enum EnumSeason {
SPRING,SUMMER,AUTUMN,WINTER ;/*此行定义元素列表 为枚举类的静态变量 必须放在枚举类的第一行*/
}
public static void main(String args[]){
EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类
System.out.println(enumSeason.name());
System.out.println(enumSeason);
System.out.println(enumSeason.toString());
}
}
运行结果:
SUMMER
SUMMER
SUMMER
由于枚举重写了Object的toString方法,所有enumSeason.toString()返回的就是枚举对应的name
2.带构造器的枚举
public class TestEnum {
/*带构造方法的枚举*/
public enum EnumSeason {
SPRING(0),SUMMER,AUTUMN,WINTER ;/*如果此行代码后面还有代码,此处最后的“;”必须写,如果没有可以省略*/
private EnumSeason(){//枚举构造方法必须是私有,这样才能保障只有内部调用
System.out.println("无参构造方法");
}
private EnumSeason(int n){
System.out.println("有参构造方法");
}
}
public static void main(String args[]){
EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类
}
}
运行结果:
有参构造方法
无参构造方法
无参构造方法
无参构造方法
在枚举类加载的时候会调用所有静态枚举列表,因此我们知道枚举的元素列表可以分别调用不同的构造方法
3.带有抽象方法的枚举
public class TestEnum {
/*带抽象方法的枚举*/
public enum EnumSeason {
SPRING(0){ //元素列表是EnumSeason类型的对象
public String getSeasonName(){
return "spring";
}
},
SUMMER(1){
public String getSeasonName(){
return "summer";
}
},
AUTUMN(2){
public String getSeasonName(){
return "autumn";
}
},
WINTER(3){
public String getSeasonName(){
return "winter";
}
};
public abstract String getSeasonName();//此处定义抽象方法
private int seasonValue;
private EnumSeason(int seasonValue){
this.seasonValue = seasonValue;
}
}
public static void main(String args[]){
EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类;
System.out.println(enumSeason.getSeasonName());
System.out.println(enumSeason.seasonValue);
}
}
运行结果:
summer
1
枚举的元素列表,相当于就是枚举的一个实例对象,创建类的实例对象,必须实现该类的抽象方法,也就是一个抽象类必须由它的子类创建实例对象,子类必须实现父类的抽象方法。
打开编译目录可以知道,在这个例子中SPRING,SUMMER,AUTUMN,WINTER都是EnumSeason的具体实现类。
4.switch对枚举的支持
在JDK1.5之前switch仅支持byte,short,char,int。在JDK1.5加入枚举之后,switch也支持了枚举类型。在JDK1.7 switch又支持了String类型
public class EnumTest {
/*带抽象方法的枚举*/
public enum EnumSeason {
SPRING(0){ //元素列表是EnumSeason类型的对象
public String getSeasonName(){
return "spring";
}
},
SUMMER(1){
public String getSeasonName(){
return "summer";
}
},
AUTUMN(2){
public String getSeasonName(){
return "autumn";
}
},
WINTER(3){
public String getSeasonName(){
return "winter";
}
};
public abstract String getSeasonName();//此处定义抽象方法
private int seasonValue;
private EnumSeason(int seasonValue){
this.seasonValue = seasonValue;
}
}
public static void main(String args[]){
EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类;
switch (enumSeason){
case SPRING:
System.out.println("spring");
break;
case SUMMER:
System.out.println("summer");
break;
case AUTUMN:
System.out.println("autumn");
break;
case WINTER:
System.out.println("winter");
break;
}
}
}
运行结果:
summer
枚举提供了丰富的方法,可以参考JDK文档,这里就不多做介绍
enum关键字其实就是创建一个类,而这个类就是java.lang.Enum的子类,实现了Enum的方法,枚举提高了程序的安全性,代替了传统的定义常量的方式。
如果在程序中想要用到单例模式,枚举是个不错的选择,可以定义一个元素列表,因为枚举的构造方法必须是私有的,也就是外部不能创建对象,从而保障了单例。Enum还实现了Comparable和Serializable,所以枚举之间是可以进行比较的,并且可以被序列化
- 描述: Enum toString()
- 大小: 13.5 KB
- 大小: 4.1 KB
分享到:
相关推荐
总结来说,Java枚举提供了一种安全、可读的方式来处理一组预定义的常量。通过枚举,我们可以避免硬编码常量,减少错误,提高代码的可维护性。在实际开发中,枚举常用于定义状态、角色、类型等固定集合的场景。通过...
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
总结来说,Java枚举类型提供了一种安全、类型安全的方式来定义和使用常量,它可以拥有构造器、方法和字段,并能与switch语句、序列化、反射等Java特性很好地结合。理解并熟练使用枚举,能够使代码更加清晰、易读,...
### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...
### Java 枚举类总结 #### 一、概述与基本概念 枚举类型(`enum`)是Java中的一种特殊类,它允许开发者定义一组命名的常量,并将其视为一个独立的类型。从JDK 1.5版本开始,Java引入了枚举类型,它提供了一种更加...
总结,Java枚举类型是一种强大的工具,可以用于表示固定数量的常量。它们提供了一种安全、类型化的方式,避免了硬编码常量,增加了代码的可读性和可维护性。通过构造函数、方法、接口实现等特性,枚举可以适应各种...
本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...
总结起来,Java枚举类型是一个强大的工具,它可以替代`static final`常量来表示一组固定的值,提供类型安全、易于维护的代码。通过枚举,我们可以更方便地管理常量,减少错误,并增加代码的灵活性。枚举是Java中一个...
如有侵权请联系删除,欢迎批评指正 java枚举,起初在网上抄了一部分,然后自己加了点示例,做一个记录,也算是为以后留个备份,技术小白一个,还在努力成长
总结起来,Java枚举类型提供了丰富的功能,包括但不限于定义常量、属性、方法,以及实现抽象方法。这种类型使得代码更加规范,提高了代码的可读性和可维护性,减少了错误的可能性。在处理一组固定不变的值时,使用...
关于java枚举的总结: 从入门介绍到项目使用的实际经验归纳总结得出! 从jdk5到jdk8!
### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...
本文将深入探讨Java枚举的一些鲜为人知的特性。 1. 枚举默认值与自定义值: Java枚举的默认值是从0开始的整数序列,如示例中的Color枚举。然而,我们可以通过自定义构造函数为每个枚举实例赋予特定的值,如...
Java枚举可以实现接口,也可以拥有字段和方法,因此可以用来创建复杂的枚举集。例如,可以定义一个表示星期几的枚举,并为每个枚举值添加额外的属性或行为: ```java public enum DayOfWeek implements Comparable...
下面是Java枚举的七种常见用法的详细说明: 1. 常量用法: 在Java中,枚举可以用于组织一组相关的常量。在JDK 1.5之前,我们通常使用`public static final`关键字来定义常量,但这种方式不够灵活。枚举提供了一种...
总结来说,Java 枚举提供了一种强类型、安全且易于使用的机制,用于表示一组固定数量的值。它简化了代码,提高了程序的可读性和可维护性,同时也避免了传统的常量类或单例模式的一些潜在问题。通过深入理解和灵活...
总结来说,Java枚举的线程安全性主要源于以下几点: 1. 枚举类是final的,不能被继承,防止了子类化导致的多实例问题。 2. 枚举实例在类加载时即被创建,类加载过程是线程安全的。 3. 静态常量的初始化在类加载阶段...
总结来说,Java的枚举提供了一种安全的方式来定义和管理一组相关的常量,便于遍历和操作。Properties类则用于处理键值对数据,常用于配置文件的读取和写入。类加载器则帮助我们找到并加载类及其相关的资源,如...
总结来说,Java枚举类型是为了解决传统整型枚举模式的不足而设计的,它提供了类型安全、良好的可读性和可扩展性,是编写高质量Java代码的重要工具。在实际开发中,应优先考虑使用枚举类型来定义固定的、有限的选项...