Java中枚举及其构造函数

本文介绍了Java中枚举类型的使用方法,包括最简单的枚举定义、带构造器的枚举及其实例创建方式,并展示了如何利用EnumSet来创建枚举集合。

一、最简单的枚举

[java]  view plain  copy
  1. public enum Season{ Spring,Summer,Fall,Winter};  

二、带构造器的枚举

如下:EOrderType就是枚举的构造函数

例如NormalOrder(0, "一般订单") 第一个0对于构造函数的type,第二个参数对应构造函数的desc

getOrderType

注意:1、需要在枚举实例后面加上分号,然后再写构造函数等

            2、枚举实例必须在前面

            3、定义枚举的构造器方法带参,只能为private 

[java]  view plain  copy
  1. public enum EOrderTyper {  
  2.       /** 
  3.      * 无效的订单类型 
  4.      */  
  5.     Invalid(-1,"无效的订单类型"),  
  6.       
  7.     /** 
  8.      * 一般订单 
  9.      */  
  10.     NormalOrder(0"一般订单"),  
  11.       
  12.     /** 
  13.      * 虚拟礼品卡订单 
  14.      */  
  15.     VDDmoney(50"虚拟订单"),  
  16.       
  17.     /** 
  18.      * 实物礼品卡订单 
  19.      */  
  20.     PDDmoney(51"礼品卡订单");  
  21.     private int orderType;  
  22.     private String description;  
  23.     private EOrderTyper(int type, String desc) {  
  24.         this.orderType = type;  
  25.         this.description = desc;  
  26.     }  
  27.   
  28.   
  29.     public int getOrderType() {  
  30.         return this.orderType;  
  31.     }  
  32.   
  33.   
  34.     public String getDescription() {  
  35.         return this.description;  
  36.     }  
  37.       
  38. }  

三、EnumSET

可以用来创建枚举集合,例如:

[java]  view plain  copy
  1. public static EnumSet<EPriceType> getSetTypes(){  
  2.       EnumSet<EPriceType> set=EnumSet.noneOf(EPriceType.class);    
  3.       set.addAll(EnumSet.complementOf(set));    
  4.       return set;  
  5.     }  
【源码免费下载链接】:https://renmaiwang.cn/s/bi0ho Java 枚举类是 Java 语言中的一种特殊类型,它能够定义一组固定的常量。其构造函数的作用在于定义枚举类的行为和特性,在本文中我们将深入探讨 Java 枚举类的构造函数实例及其应用方式。首先让我们了解枚举类的基本结构:通过使用‘enum’关键字进行定义,所有生成的枚举体都继承自Java.lang.Enum这个父类。根据通用模式Class Enum<E extends Enum <E>>,每一个枚举类型的值都将对应一个protected Enum<String name, int ordinal>构造函数。由于这些构造函数是私有的,因此无法在外部创建新的enum对象。每个默认定义的枚举类型会自动生成一个没有参数的构造函数,并为每个具体的枚常量添加对应的属性信息。例如,在以下示例中AccountType.FIXED并未显式声明任何参数值,这表明该类型的构造函数被隐式地调用以创建其实例。通过这种方式,枚举类实现了在不显式定义情况下动态生成多种状态或场景的能力。值得注意的是,Java枚举类的构造函数可以分为两种形式:一种是无参数构造函数,另一种是有参数的构造函数。如上文所述,在weekday 枚举类中我们可以看到这两种构造函数的形式各具特色。当调用无参数构造函数时系统会输出“no args”信息;而有参数构造函数则会在调用时显示相应的参数值。这种结构不仅简化了代码逻辑,还提升了程序的可读性和扩展性。基于上述分析,Java 枚举类的构造函数实例详解在实际应用中展现出强大的功能优势。例如我们可以将其用于实现一个简单的状态机系统:每个状态对应一个特定的枚举值,并通过构造函数来初始化相关属性和行为模式。在游戏开发领域这一技术同样具有广泛的应用前景。例如在一个游戏中我们可以通过定义不同的游戏状态(如游戏开始
### Java 枚举是否需要添加 `private` 构造函数及其原因 在 Java 中,枚举类型的构造函数默认是 `private` 的。这意味着即使不显式声明为 `private`,编译器也会自动将其视为私有的[^1]。 #### 默认行为 当定义一个枚举时,如果未指定任何构造函数,则编译器会提供一个无参的私有构造函数。这确保了外部代码无法通过构造函数来创建新的枚举实例,从而保持枚举常量集合的固定性和安全性[^2]。 ```java public enum Color { RED, GREEN, BLUE; } ``` 在这个例子中,虽然没有看到明显的构造函数定义,但实际上存在一个隐式的 `private` 无参数构造函数。 #### 显式定义 `private` 构造函数的原因 尽管默认情况下构造函数已经是 `private` 的,但在某些场景下仍然建议显式地声明它: - **增强可读性**: 让其他开发者一眼就能明白该枚举不允许外部实例化。 - **传递参数给枚举成员**: 如果希望每个枚举成员携带额外的数据(比如颜色描述),则可以通过带有参数列表的构造函数实现这一点[^3]。 ```java public enum ColorWithDescription { RED("This is red"), GREEN("This represents green"), BLUE("The color of sky"); private final String description; // Explicitly defined as private to emphasize no external instantiation allowed private ColorWithDescription(String desc) { this.description = desc; } public String getDescription() { return description; } } ``` 上述代码展示了如何利用带参数的 `private` 构造函数为每个枚举项赋予特定属性,并提供了相应的方法以供外界访问这些数据[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值