首页 > 解决方案 > 方法中的参数从枚举中请求一个常量 - 这些方法如何只接受特定的常量?

问题描述

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

我有以下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_)在其他地方甚至相同位置的类中。)

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

感谢您抽出宝贵的时间。

标签: javaclassenumsconstants

解决方案


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

没有充分的理由将这些常量保持不变enum


推荐阅读