Аргументы в методе запрашивают константу из Enum - как эти методы могут принимать только определенные c константы? - PullRequest
0 голосов
/ 17 июня 2020

Я собирался заставить вас всех «расшифровать» мой код и помочь мне решить мою проблему, но потом я понял, что вам все нравится как можно проще и понятнее, поэтому мы go (смеется) ...

У меня есть следующие java файлы:

  • Перечисление с множеством и каждой константой, действующей как «параметр свойства» для загрузки программы или выполнения задачи для этой программы
  • Обычный старый класс с методами и переменными
  • Некоторые методы, которые запрашивают другие методы
  • Методы, на которые можно ссылаться, имеющие аргументы, поддерживающие специфические c константы из Enum.

Предварительный просмотр Enum

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_) только для взять константы из

Перечисление свойств, которые начинаются с префикса, указанного в аргументе мета od SETTING_ и

TASK_ без запуска метода? (идея, такая как затмение или идея) ...


Как я могу достичь этой системы наилучшим образом? Предпочтительно я хотел бы использовать новый метод , который ожидает результата, определенного необходимыми аргументами, но перед выполнением задачи или применением настройки. (то есть; когда кодировщик ссылается на метод, такой как setSetting(SETTING_), в каком-то другом классе или даже в том же месте.)

При полном раскрытии информации я не просто копирую и вставляю, мне нравится создавать свои собственные его версия. Если это так здорово и просто, я мог бы просто ... чтобы вы знали. С учетом вышесказанного, я прошу вас сохранять его простым, простым и ясным и не усложнять его, я не могу улучшить его! (Я тоже проверяю свои знания с этим)

СПАСИБО ЗА ВАШЕ ВРЕМЯ, Я ЦЕНИЮ ЭТО.

1 Ответ

0 голосов
/ 17 июня 2020

Нет. Конечно, вы могли бы добавить некоторую проверку ввода во время выполнения, но это не добавит никаких ограничений времени компиляции. Вам действительно следует разделить свои перечисления. Даже если вы выбросили исключение при недопустимом вводе, я думаю, что большинство пользователей / сопровождающих сочтут это довольно удивительным или, по крайней мере, немного раздражающим. Это можно было бы рассматривать как нарушение principle of least astonishment и, вполне вероятно, single responsibility principle.

Нет веских причин для сохранения этих констант в одном и том же enum.

...