【问题标题】:Arguments in a method request a constant from an Enum - How can these methods only accept specific constants?方法中的参数从枚举中请求一个常量 - 这些方法如何只接受特定的常量?
【发布时间】:2020-10-06 17:50:27
【问题描述】:

我本来打算让你们“破译”我的代码并帮助我解决我的问题,但后来我意识到你们都喜欢它尽可能简单明了,所以我们开始吧(哈哈)...

我有以下 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)...


以最好的方式,我怎样才能实现这个系统?最好我想利用一个 new 方法,它期望由所需参数定义的结果 - 但在执行任务或应用设置之前。 (即;当编码器在其他地方甚至同一位置的类中引用诸如setSetting(SETTING_) 之类的方法时。)

通过完全公开,我不只是复制和粘贴,我喜欢制作我自己的版本。如果它是如此伟大和简单,我可能会……所以你知道。话虽如此,我确实要求您保持简单,保持简单明了,不要让它太紧,我无法改进! (我也在用这个测试我的知识)

谢谢你的时间,我很感激。

【问题讨论】:

  • 在旁注中,我真的很固执地保留一个枚举类......这个项目的宏伟计划比看起来要大,我真的很喜欢把小东西和大东西放在一起在他们自己的空间内组织起来。

标签: java class enums constants


【解决方案1】:

你没有。当然,您可以添加一些运行时输入验证,但这不会添加任何编译时间限制。你真的应该拆分你的枚举。即使您对无效输入抛出异常,我认为大多数用户/维护人员会发现它非常令人惊讶或至少有点恼人。它可能被认为违反了principle of least astonishment,很可能是single responsibility principle

没有充分的理由将这些常量保持在相同的 enum 中。

【讨论】:

  • 非常感谢!我很高兴你提到了这些原则,它真的改变了我对某些事情的看法。在整个项目中,我或多或少都遵循了回顾这一原则,这是有益的。太好了,因为这些原则破坏了目标并提供了更好、更有效的替代方案。
  • 我已选择将“package properties.EnumClass”中的包和类的整体格式更改为 package properties.singleresponsibility.EnumClass'。如果我是正确的,那应该改进单一责任原则中提到的封装。
  • 总结一下,我认为在真正开始产生结果之前不要走太远真的很重要......您可能没有意识到您的生产方法可能没有遵循基本原则特别是根据所有有意义的事情转化为成品销售的表现。哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多