首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么所有枚举都扩展枚举<e>

为什么所有枚举都扩展枚举<e>?这是因为枚举可以包含未在枚举定义中列出的其他元素,这些元素可以是未知的或不确定的。这种扩展枚举可以使枚举更加灵活和通用,以适应不同的需求和情况。

举例来说,假设我们有一个简单的枚举,其中包含了一些颜色值:

代码语言:txt
复制
enum Color {
  RED,
  GREEN,
  BLUE
};

但是,在某些情况下,我们可能需要将颜色扩展到其他值,例如:

代码语言:txt
复制
enum Color {
  RED,
  GREEN,
  BLUE,
  YELLOW,
  PURPLE,
  BLACK,
  WHITE
};

在这个枚举中,我们添加了一些新的颜色值,包括 YELLOW、PURPLE、BLACK 和 WHITE。这些值不是枚举的一部分,但它们可以用于扩展枚举的用途。

同样地,在某些情况下,我们可能需要将枚举扩展到其他值,例如:

代码语言:txt
复制
enum Color {
  RED,
  GREEN,
  BLUE,
  YELLOW,
  PURPLE,
  BLACK,
  WHITE,
  RED_VIOLET,
  OLIVE_GREEN,
  NAVY
};

在这个枚举中,我们添加了一些新的颜色值,包括 RED_VIOLET、OLIVE_GREEN 和 NAVY。这些值不是枚举的一部分,但它们可以用于扩展枚举的用途。

总的来说,为什么所有枚举都扩展枚举<e>?这是因为枚举可以包含未在枚举定义中列出的其他元素,这些元素可以是未知的或不确定的。这种扩展枚举可以使枚举更加灵活和通用,以适应不同的需求和情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TS基础之枚举扩展知识——位枚举

新手一枚,希望能和大家共同成长,若文章存在哪些不足的地方,欢迎大佬们多提建议 枚举扩展知识——位枚举枚举也可以叫枚举位运算,这里的位枚举针对的是数字枚举,字符串枚举是不行的,这里举个栗子来说明位运算...,我们知道一个文件有很多操作权限,可读、可写、可创建、可删除,权限有对应的取值,这里是数字,不能超过这个范围,如下: enum Permission{ Read, Write,...比较两个数字的二进制,两者相同位置的数字最后结果取0,不同取1,比方说之前的权限是0011,要删除0010读的权限,最后结果是0001 如果将来我们遇到可选权限方面的场景可以使用位运算的方式进行处理,这种方式非常优雅,扩展性比较好

83810

扩展 swagger 支持文档自动列举所有枚举

承接上篇文章 《一站式解决使用枚举的各种痛点》 文章最后提到:在使用 swagger 来编写接口文档时,需要告诉前端枚举类型有哪些取值,每次增加取值之后,不仅要改代码,还要找到对应的取值在哪里使用了,然后修改...反正小黑我觉得这样做很不爽,那有没有什么办法可以让 swagger 框架来帮我们自动列举出所有枚举数值呢? 这期小黑同学就来讲讲解决方案。先来看一下效果,有一个感性的认识。 ?...resolve(int index) { return mappings.get(index); } } 3、实现 ModelPropertyBuilderPlugin 接口,扩展...swagger,实现在文档中列举所有枚举值。...Integer.class)); } } } } 4、实现 ParameterBuilderPlugin 和 OperationBuilderPlugin 接口,列举枚举参数的所有取值

3K21
  • 转向Kotlin——枚举类和扩展

    枚举类 Kotlin中的枚举类和Java中的枚举类型非常相似,具有类的特性。一般将可枚举的同类型的一组值作为枚举类定义。...默认状态下,直接输出枚举类的元素值,会输出元素值的名称。 为枚举值指定数值 其实枚举类每一个值就是当前枚举类的对象,因此,如果要为每一个枚举类的值指定一个数字,直接通过构造器传入即可。...无论是Java还是Kotlin提供了相应的API来获取枚举值的名字和索引。Kotlin提供了name和ordinal属性,分别用于获取枚举值名和索引。...在类的外部对系统的类进行扩展,由于将扩展的部分放到了自己的源代码中,因此这些源代码仍然可以运行在其他机器的JDK和Kotlin运行时上。...但在类中对另一个类扩展却可以添加open关键字。 小结 尽管枚举类并不是在代码中经常出现,但用来定义可枚举的一组相关值还是非常好的,至少让代码变得更可读(远比使用常量或直接使用数字要好)。

    1.4K20

    TypeScript入门——扩展类型之枚举

    扩展类型——枚举 在上一篇文章中聊到了很多TS基础类型,那为什么又出现了扩展类型枚举,我们知道任何东西都不是平白无故就出现的,都是为了解决特定的问题。...枚举只是扩展类型其中之一,比如说还有类型别名,接口,类 那么枚举是什么意思呢? 枚举就是把一卡车西瓜一个一个摆在摊子上的过程。 有什么作用?...,产生大量的修改,为什么会这样呢?...根本原因是将逻辑含义和真实的值混淆在了一起,目前约束的美女和帅哥是真实的值,但不管是帅哥、美女,还是男、女都是一个含义,表示生物学上的性别男和女,使用字面量类型的时候会导致真实的值和逻辑含义的值是对应的...使用了枚举之后将来直接修改真实的值就可以了,仅需要改一个地方即可,因为后续所有的代码都是用的是逻辑含义的值,这是不会变化的。

    67340

    为什么建议你使用枚举

    ); System.out.println("所有失败状态:" + errorCodeEnums); } } enum ColorEnum { RED("红色", 1)...【强制】所有枚举类型字段必须要有注释,说明每个数据项的用途。 【参考】枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。...知识扩展 枚举为什么是线程安全的?...final 修饰的普通类,它的所有属性也都会被 static 和 final 关键字修饰,所以枚举类在项目启动时就会被 JVM 加载并初始化,而这个执行过程是线程安全的,所以枚举类也是线程安全的类。...并且我们还讲了枚举类的使用场景——单例,以及枚举为什么是安全的,最后我们讲了枚举比较的小技巧,希望本文对你有帮助。

    39630

    为什么建议你使用枚举

    ); System.out.println("所有失败状态:" + errorCodeEnums); } } enum ColorEnum { RED("红色", 1)...【强制】所有枚举类型字段必须要有注释,说明每个数据项的用途。 【参考】枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。...知识扩展 枚举为什么是线程安全的?...final 修饰的普通类,它的所有属性也都会被 static 和 final 关键字修饰,所以枚举类在项目启动时就会被 JVM 加载并初始化,而这个执行过程是线程安全的,所以枚举类也是线程安全的类。...并且我们还讲了枚举类的使用场景——单例,以及枚举为什么是安全的,最后我们讲了枚举比较的小技巧,希望本文对你有帮助。

    22250

    驱动开发:如何枚举所有SSDT表地址

    在前面的博文《驱动开发:Win10内核枚举SSDT表基址》中已经教大家如何寻找SSDT表基地址了,找到后我们可根据序号获取到指定SSDT函数的原始地址,而如果需要输出所有SSDT表信息,则可以定义字符串列表...DriverObject->DriverUnload = UnDriver; return STATUS_SUCCESS; } 代码获得NtOpenFile这个函数的内存地址,输出效果如下所示: 根据上一章节的内容扩展...,枚举完整SSDT表我们可以这样来实现,通过将完整的SSDT结构字符串放入到SSDT变量内,然后通过不间断的循环取出每一个SSDT函数的相对地址信息。...KeServiceDescriptorTable 函数地址 // LyShark.com // 4c 8d 15 e5 9e 3b 00 lea r10,[nt!...[lyshark]); } DriverObject->DriverUnload = UnDriver; return STATUS_SUCCESS; } 我们运行这段程序,即可得到整个系统中所有

    32040

    TypeScript基础(二)扩展类型-枚举及其位运算

    本文将介绍字面量类型的问题、类型别名的局限以及枚举的优缺点及示例详细说明枚举的用处,以及扩展知识枚举的位运算。 字面量类型的问题 字面量类型有一些局限性: 1....枚举 -- 使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举。...不能动态扩展枚举在定义时就确定了所有可能的值,无法在运行时动态添加新的值。 2. 不能进行复杂操作:枚举只能表示一组离散的常量值,无法表示范围或模式。...通过使用枚举和位运算符,我们可以方便地对多个权限进行组合和判断。这种方式可以简化代码,并提供更灵活和可扩展的权限控制机制。...枚举提供了一种更简单和直观的方式来定义一组常量值,但在动态扩展和复杂操作方面有一些限制。因此,在选择使用type还是枚举时,需要根据具体情况进行判断。 另外,枚举的位运算运用得当时会有奇效。

    23060

    为什么我不再推荐枚举策略模式?

    ◆一、为什么讲策略模式 策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改” 我个人的理解是 将一些除了过程不同其他一样的函数封装成策略...枚举的策略类是公用且静态,这意味着这个策略过程不能引入非静态的部分,扩展性受限 策略模式的目标之一,是优秀的扩展性和可维护性,最好能新增或修改某一策略类时,对其他类是无改动的。...而枚举策略如果过多或者过程复杂,维护是比较困难的,可维护性受限 ◆四、基于工厂的策略模式 为了解决良好的扩展性和可维护性,我更推荐以下利用spring自带beanFactory的优势,实现一个基于工厂的策略模式...*/ @Resource private DataService dataService; /** * 利用注解@Resource和@Autowired特性,直接获取所有策略类...工厂策略模式会比枚举策略模式啰嗦,但也更加灵活、易扩展性和易维护。故简单策略推荐枚举策略模式,复杂策略才推荐工厂策略模式。

    1.6K30

    从暴力枚举用户到获取域所有信息

    我们可以通过钓鱼、欺骗、信息收集、密码猜解等方式获取一个域中普通用户的权限,下面先看一下如何暴力枚举域中的用户名。...暴力枚举用户名 我们在对域中信息一无所知的情况下,也没有域中的主机权限,也没有域中用户的账户信息,那么我们可以通过使用字典的方式枚举域中的账户名称。...对于用户名枚举需要对根据以下错误信息来辨别用户名是否正确: ? 下面推荐几个工具来完成这个工作。...枚举用户凭证 可以使用 Metasploit 的 auxiliary/scanner/smb/smb_login 来枚举用户的密码凭证,使用帮助如下: ? ?...组和计算机信息,使用命令如下: windapsearch --dc-ip [IP_ADDRESS] -u [DOMAIN]\USERNAME -p [PASSWORD] -U -U参数的意思获取域中的所有用户

    2.7K00

    Java枚举为什么它是单例模式的最佳选择?

    所以今天介绍一下,为什么枚举是实现单例模式的最佳选择。...线程安全   使用枚举实现单例模式是线程安全的。在多线程环境中,多个线程可以同时访问单例对象,但是由于枚举的特殊性质,只有一个实例对象被创建,所以不会出现线程安全问题。...如果使用枚举实现单例模式,则不需要担心这个问题,因为枚举实例是在加载枚举类型时由 JVM 创建的,并且它们是全局可访问的,因此不会出现创建多个实例的情况。...如果使用枚举实现单例模式,则可以避免这种攻击,因为枚举类型的构造函数是私有的,不能通过反射来调用。 简单明了可读性强   使用枚举实现单例模式可以使代码更加简洁明了。...此外,枚举类型的构造函数是私有的,也可以防止反射攻击。所以说java枚举是实现单例模式的最佳选择。

    55620

    「源码分析」— 为什么枚举是单例模式的最佳方法

    关于其用法之一,便是单例模式,并且在《Effective Java》中有被提到: 单元素的枚举类型已经成为实现 Singleton 的最佳方法 本文便是探究 “为什么枚举是单例模式的最佳方法?”。...本文的内容概要如下: 回顾常见的单例模式方法; 探索 Java 中的枚举是如何防止两种攻击; 若不使用枚举,又如何防止两种攻击。 2....Java 生成的枚举类都会继承 Enum 抽象类,其只有一个构造函数: public abstract class Enum> implements Comparable..., Serializable { // name: 常量的名称 // ordinal: 常量的序号(枚举声明中的位置,从0开始递增) // 若以 EnumSingleton...System.out.println(instance == deserializeInstance); } //.... } // true 反序列得到的仍是同样的对象,这是为什么

    1.2K60

    代码的坏味道(二)——为什么建议使用模型来替换枚举

    为什么建议使用对象来替换枚举? 在设计模型时,我们经常会使用枚举来定义类型,比如说,一个员工类 Employee,他有职级,比如P6/P7。...这里就出现了「代码的坏味道」 新的枚举值出现怎么办? 显然,添加一个新的枚举值是非常痛苦的,特别通过 switch 来控制流程,需要每一处修改枚举,这也不符合开闭原则。...而且,即使不修改,默认的防御性手段也会让那个新的枚举值将会抛出一个异常。 为什么会出现这种问题? 是因为我们定义的枚举是简单类型,无状态。...这个时候,需要用重新去审视模型,这也是为什么 DDD 是用来解决「大泥球」代码的利器。...当然,并不是强求你把所有枚举替换成类模型来定义,这不是绝对的。还是要按照具体的业务逻辑来处理。

    13130
    领券