Идеальный способ создания пользовательской структуры данных, учитывая мой вариант использования - PullRequest
0 голосов
/ 27 февраля 2012


Это снова, я полагаю, вопрос «передового опыта», потому что я могу придумать некоторые неэффективные способы реализации моего варианта использования.

Мой вариант использования выглядит следующим образом
Я пишу метод MethodManager (своего рода), который помогает конечному пользователю иметь дело с реальными вызовами методов (функций) через пользовательский интерфейс.
Для этой конкретной цели у меня есть класс methodDefinition, который представляет собой объектную форму того, как метод (функция) выглядит в моей системе.
Краткий обзор того, как выглядят члены моего methodDefinition, выглядит следующим образом

methodName -- String
methodInputs -- ArrayList<String>
methodResultType -- enum(STRING,MAP,LIST)
methodResult  -- <<variable, on the basis of methodResultType>>

Теперь methodResult является переменной и может быть любым из String, Map или List, в зависимости от того, какое значение methodResultType установлено.

Я создал класс MethodResultType для учета methodResultType, и он выглядит следующим образом

public enum MethodResultType {
    LIST,
    MAP,
    STRING;
    }

Теперь я знаю, что должен написать класс для учета methodResult и его переменной природы, основанной на methodResultType, но не могу придумать незапутанный способ.

Будем весьма благодарны за любые предложения / указания на этот счет.

Спасибо
P1nG

1 Ответ

2 голосов
/ 27 февраля 2012

List, Map и String имеют общий класс предков: java.lang.Object.Таким образом, methodResult может быть объектом.

Вы также можете заключить результат и его тип в объект MethodResult, который бы обеспечивал такие методы, как getType(), getValueAsString(), getValueAsList() и getValueAsMap().Эти последние три метода вызовут исключение IllegalStateException, если тип значения не является типом, возвращаемым методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...