java - 方法中的参数从枚举中请求一个常量 - 这些方法如何只接受特定的常量?
问题描述
我打算让你们都“破译”我的代码并帮助我解决我的问题,但后来我意识到你们都喜欢它尽可能简单明了,所以我们开始吧(哈哈)......
我有以下java文件:
- 具有多个和每个常量的枚举,用作加载程序或为该程序执行任务的“属性设置”
- 具有方法和变量的常规旧类
- 一些请求其他方法的方法
- 可以引用的方法具有支持来自枚举的特定常量的参数。
枚举预览
enum Properties {
SETTING_ENABLE_CONSOLE,
SETTING_ENABLE_GUI,
TASK_SCANNER_CONSOLE,
TASK_SCANNER_GUI,
}
常规旧类的预览-也包含上述方法
class RegularClass {
/* THESE ARE THE METHODS THAT ONLY TAKE SPECIFIED CONSTANTS FROM PROPERTIES AS DEFINED BY THE METHOD. */
static void setSetting (Properties SETTING_) { /* SET A PROPERTY!!! */ }
static void startTask (Properties TASK_ { /* START A TASK... */ }
static void loadProgram () {
/* THESE ARE THE METHODS THAT ARE ONLY ABLE TO PROVIDE SPECIFIC CONSTANTS FROM PROPERTIES. */
RegularClass.setSetting(Properties.SETTING_ENABLE_CONSOLE);
RegularClass.startTask(Properties.TASK_SCANNER_CONSOLE);
}
}
大问题
我怎样才能构造setSetting(SETTING_)
并startTask(TASK_)
只从
以方法参数中提供的前缀开头的属性枚举SETTING_
和
TASK_
没有需要运行的方法?(诸如eclipse或idea之类的ide)......
以最好的方式,我怎样才能实现这个系统?最好我想使用一种新方法,该方法期望结果由所需的参数定义 - 但在执行任务或应用设置之前。(即;当编码器引用某个方法时,例如setSetting(SETTING_)
在其他地方甚至相同位置的类中。)
通过完全公开,我不只是复制和粘贴,我喜欢制作我自己的版本。如果它是如此伟大和简单,我可能会……所以你知道。话虽如此,我确实要求你保持简单,保持简单明了,不要让它太紧,我无法改进!(我也在用这个测试我的知识)
感谢您抽出宝贵的时间。
解决方案
你没有。当然,您可以添加一些运行时输入验证,但这不会添加任何编译时间限制。你真的应该拆分你的枚举。即使您在无效输入上抛出异常,我认为大多数用户/维护人员会发现它非常令人惊讶或至少有点恼人。它可能被认为违反principle of least astonishment
了single responsibility principle
.
没有充分的理由将这些常量保持不变enum
。
推荐阅读
- kubernetes - 注入 istio envoy 后的 Hazelcast 问题
- javascript - Vue 2 的 Vue 3 传送
- c# - 当用户在表 1 中创建时,将用户名和 id 复制到表 2
- php - 我的代码是否足以防止 SQL 注入?
- r - autostsm stsm_estimate 错误:exo 必须是数据框或数据表
- android-studio - 创建新的密钥库 Android Studio
- java - 如何在 Java 中同步两个线程
- go - Buffo 写入 net.Conn 永久阻塞
- python - 使用python从url抓取和下载excel文件
- amazon-web-services - 为什么 terraform plan 或 terraform apply 使用与应使用不同的工作空间?