枚举的类型化子集

2024-06-07

假设我有以下内容enum type:

public enum Country {
    CHINA,
    JAPAN,
    FRANCE,
    // ... and all other countries
    AUSTRIA,
    POLAND;
}

现在我想创建这个枚举的一个子集,概念上类似于:

public enum EuropeanUnion constraints Country {
    FRANCE,
    // ... and all other countries within the European Union
    AUSTRIA,
    POLAND;
}

public enum LandlockedCountries constraints Country {
    // ... all landlocked countries
    AUSTRIA;
}

我想创建一个子集enum类型,以便我可以编写方法,例如

Set<Person> getNationalMembersOfEuropeanParliament(EuropeanUnion euCountry);

使用子类型EuropeanUnion对于参数euCountry防止 API 用户意外进入无效国家/地区,例如非欧盟国家JAPAN.

是否有任何方法可以“限制”有效枚举值的范围,以便可以从静态类型系统中受益?


您可能需要考虑使用EnumSet;这不会给你新的类型,但它可以让你以集合论的方式处理枚举值的集合:

public enum Country {
    CHINA,
    JAPAN,
    ...;

    public static final EnumSet<Country> EUROPEAN_UNION = EnumSet.of(Country.FRANCE, Country.AUSTRIA, ...);
}

EnumSet实施Set,所以你可以使用例如addAll(), removeAll() and retainAll()产生并集、差集和交集(只需记住首先复制左侧集合)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举的类型化子集 的相关文章

  • 如何添加对嵌入消息的反应 JDA

    当我执行命令 verify 时 我尝试发送和嵌入消息 然后它发送嵌入消息 但我找不到如何添加反应 我已经嵌入了消息并发送了它 但可以添加反应 import Main Bot import net dv8tion jda core Embed
  • 无法在 IntelliJ IDEA 中导入 javax.validation.constraints

    I can t import that simple library i have all jar files also i tried Ivalidate Caches Restart Maybe i have to add valida
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 将一串数字转换为数组

    我在创建将数字字符串转换为数组的程序时遇到问题 我知道这里有一个类似的问题 但我所要做的只是一组数字 例如 10 15 16 0 57 438 57 18 这是我到目前为止所拥有的 import java util Scanner publ
  • 为什么我们要在invokeAll方法之后调用join?

    我正在尝试了解 ForkJoinPool 框架并遇到以下示例 public class ArrayCounter extends RecursiveTask
  • java代码中的问号

    有人能解释一下下面代码中的问号吗 INITIAL PERMANCE 也是代码中的静态最终常量 但是语法的最后一行被称为什么 Synapse AbstractCell inputSource float permanence inputSou
  • Java 打印 PDF 并带有选项(装订、双面打印等)

    我有一个打印 PDF 的 java 程序 它使用 Apache PDFBox 创建PDDocument对象 来自 pdf 文档或某些情况下来自流 然后使用javax print API private boolean print File
  • 如何在 JPA/Hibernate 中找出实体是否分离?

    有没有办法查询JPA实体管理器给定实体是否分离 这个帖子 https stackoverflow com questions 2779857 how to know if a detached jpa entity has already
  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 当生成 Apache CXF 客户端时,为什么在实例化客户端时仍然需要 WSDL?

    我想要使 用 SOAP 服务 但 WSDL 是离线提供给我的 因此导致使用 WSDL 的本地路径生成客户端 public class SoSo extends Service public final static URL WSDL LOC
  • 什么是运行时绑定?

    根据 Android 开发者指南 Intent 是一个提供运行时绑定独立组件之间 例如两个活动 什么是 运行时绑定 继承创建类型兼容性 它允许超类引用 引用子类的对象 反过来则不然 超类引用 指的是 子类的对象 只能用于 访问继承的和重写的
  • 如何删除 Hibernate 弃用警告消息

    我们有一个查询 List
  • JPA 多对多关系创建两个联接表

    我正在尝试在之间创建多对多关系User and FileObject假设用户可以访问许多文件对象的类 并且文件对象可以由许多用户和一对多关系访问 因为一个用户可以拥有许多文件 但一个文件只能由一个用户拥有 这是我的代码 Entity pub
  • 数组等于忽略顺序[重复]

    这个问题在这里已经有答案了 可能的重复 Java 检查数组的相等性 顺序无关紧要 https stackoverflow com questions 10154305 java checking equality of arrays ord
  • 我正在从数组列表中获取内存地址,需要信息

    我正在获取一个文本文件并填充一个数组列表 为了测试该文件 我在继续之前将其打印出来 我只能看到内存地址 而看不到文件中的实际信息 我缺少一些简单且可能明显的东西吗 public class TriviaQuestion private St
  • 您可以链接两个 JFormattedTextField 的值吗?

    我有一个带有 2 个 JFormattedTextFields 的界面 我需要它们的值 不仅仅是显示的文本 相同 理想情况下 它们都应该是可编辑的 其中一个的更改会反映在另一个中 我一开始只是在两者之间共享一个文档 但很快就遇到了一个问题
  • 在内存对象缓存中开发

    我正在开发一个基于网络的医疗应用程序 需要创建一个小型内存对象缓存 这是我的用例 我们需要显示需要某些东西 血液 肾脏等 的人提交的请求列表 并且它不会是一个巨大的列表 因为在某一天对血液或其他任何东西的请求将是有限的 请注意 我们不想使用
  • Spring Boot Rest - 如何配置 404 - 找不到资源

    我得到了一个有效的春季靴休息服务 当路径错误时 它不会返回任何内容 完全没有反应 同时它也不会抛出错误 理想情况下 我预计会出现 404 未找到错误 我有一个 GlobalErrorHandler ControllerAdvice publ
  • Java双精度求和问题

    我想知道为什么我会收到此错误 这是Eclipse调试的显示日志 var double 2 8 tot getIva java lang Double 0 17 var tot get double 2 9699999999999998 我不
  • Java 8 并行流和 ThreadLocal

    我试图弄清楚如何在 Java 8 并行流中复制 ThreadLocal 值 所以如果我们考虑一下 public class ThreadLocalTest public static void main String args Thread

随机推荐

  • 如何使用Cell获取单元格引用?

    我正在使用 apache poi 3 11 来自 CellReference 我可以使用以下代码获取 rowIndex 和 Column Index CellReference cr new CellReference A1 row myS
  • 在 Rails 中实现友谊模型的最佳方式

    我想在我的应用程序中实现用户的朋友系统 所以我发现 Rails 空间解决方案非常好 其想法是创建两行 in the Friendships table 第一行为发送者邀请 第二行为接收者 用户之间的关系设置为has many像这样的协会 h
  • ASP.NET Web api - 设置自定义 IIdentity 或 IPrincipal

    在我们的asp net mvc web api项目中 我们想要使用自定义授权AuthorizeAttribute 我们注意到有两种不同的AuthorizeAttribute 一于System Web MVCMVC 的命名空间和其他的命名空间
  • 如何使用反应路由器在重定向上传递参数?

    我正在使用 React router 版本 2 0 1 在组件之间进行导航 我遇到了一个场景 我想动态导航到其他组件 我做了这样的事情来重定向 browserHistory push some path 它正在完美地导航到其他组件 但我还想
  • 将 String 转换为 byte,然后转换为 int

    我发现了很多关于这个主题的问题 但我无法解决我的问题 用户将输入一个名字String我需要将其转换为List
  • 在 Cypress 中递增和递减 的值

    我想测试 HTML 输入字段的值的递增和递减 type number 在赛普拉斯 更准确地说 我更喜欢使用箭头键来增加和减少值 但我似乎无法使用最明显的方法来实现这一点 作为一个最小的工作示例 我设置了一个 React 组件 其渲染方法如下
  • R:几个单独图的重新排序因子水平

    我正在尝试从同一个 data frame 创建多个单独的图 每个图的 y 轴上的因子水平顺序不同 每个图都应该对 y 上的因子水平进行递减排序 我知道这可以为每个图手动完成 但我正在寻找一种更有效和更优雅的方法 因为我需要创建相当多的图 这
  • 如何编写正则表达式来匹配不包含单词的字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 正则表达式匹配不包含单词的字符串 https stackoverflow com questions 406230 regular expression to match string not con
  • Laravel 5.3 withCount() 嵌套关系

    模型结构如下 教程 gt hasMany 章节 gt hasMany 视频 我们如何使用 laravel 5 3 的 withCount 方法从教程模型加载视频数量 video count 我努力了 Tutorial withCount c
  • 初始化变量以减少 OMP

    OpenMP 标准指定了缩减变量的初始值 那么我是否必须初始化该变量以及在以下情况下如何执行此操作 int sum for int it 0 i
  • 如何在 db2 中自动增量?

    我认为这很简单 但我似乎无法在我的 db2 数据库中使用 AUTO INCRMENT 我做了一些搜索 人们似乎在使用 默认生成 但这对我不起作用 如果有帮助的话 这是我想要创建的表 其中 sid 自动递增 create table stud
  • AJAX - 上传文件 (HTML5) 和 PHP

    我感觉完全超出了我的深度 但我感觉很接近 我正在尝试使用 AJAX 上传文件 我找到了这个教程http blog new bamboo co uk 2010 7 30 html5 powered ajax file uploads http
  • 仪器化状态单子

    我正在努力给予Monad and MonadState的实例State 计算的数量 gt gt return get and put运营 data Counts Counts binds Int returns Int gets Int p
  • 使用python删除未访问的文件

    My django app解析用户上传的一些文件 用户上传的文件可能会在服务器中保留很长时间 而没有被应用程序解析 如果很多用户上传大量文件 这可能会增加大小文件 我需要删除应用程序最近未解析的那些文件 比如not accessed for
  • useRef 和普通变量的区别

    我想知道这两个代码之间的区别 1 import React from react import ReactDOM from react dom function App const myref React useRef 0 2 import
  • 在 `module.link()` 回调中使用动态导入会导致错误

    在我们的项目中我们需要使用vm Module 在自定义上下文中运行源代码 假设源代码是 import path from path 根据Node js 文档 https nodejs org api vm html class vmmodu
  • Ruby 混淆器 [重复]

    这个问题在这里已经有答案了 是否有 ruby 混淆器或 编译器 有几个选项 例如RubyScript2Exe http www erikveen dds nl rubyscript2exe or 多合一红宝石 http www erikve
  • 使用 InnoSetup 创建 NLog 日志文件文件夹

    我遇到一个问题 我需要我的用户能够在没有管理员权限的情况下运行我的应用程序 但同时 我需要 NLog 能够创建它的日志文件 它需要管理员权限才能在应用程序安装在同一文件夹中 我正在尝试在应用程序目录下创建一个目录 名为Logs 并给ever
  • WCF 中的 Web 服务发现:Ws-Discovery 还是 UDDI?

    我知道 UDDI 和 Ws Discovery 熟知搜索服务与广播的位置 之间的区别 但我的问题是 在 WCF 中发现 Web 服务的最简单方法是什么 最简单的意思是 WCF 中已经实现了哪些内容并且现在可以使用 我还没有在 WCF 中看到
  • 枚举的类型化子集

    假设我有以下内容enum type public enum Country CHINA JAPAN FRANCE and all other countries AUSTRIA POLAND 现在我想创建这个枚举的一个子集 概念上类似于 p