Id 'хотел создать список данных, которые будут переданы от метода к методу, однако я не могу использовать структуру, потому что данные, которые будут содержаться в этом списке, будут различаться в зависимости от ввода.Список различных типов?
Например
if (x == 1) {
a = 1
b = true
c = 42
d = "hello"
}
if (x == 2) {
a = 2
b = 'g'
c = "sup"
}
Я считаю, что мои варианты следующим образом:
- Создать массив или список строк, и отбрасывать данные обратно к тому, что он изначально был из строк. Это беспорядочно и может привести к ошибкам неинтерпретируемого ввода, хотя это будет не так уж плохо, поскольку все это будет обнаружено во время выполнения.
- Создайте структуру для каждой возможности - Это даже хорошая практика?
- Как-то использовать дженерики. Из того, что я знаю, в то время как дженерики безопасны по типу, но не строгие, они должны быть применены к типам до их использования. Например, если бы мне нужен список элементов здесь, мне нужно было бы отличить их от строк, как это было бы с решением 1, что сделало бы это бесполезным.
Мой вопрос тогда, какой из этих вариантов является лучшим? Или есть альтернативный вариант, использующий какой-то общий тип, о котором я не знаю? Количество возможных переменных в каждом случае может меняться, как и их типы. Я хотел бы иметь возможность возвращать один список или массив вызывающему методу, чтобы он мог соответствующим образом обрабатывать результат. Он будет знать, как обращаться с каждой группой данных на основе значения a, так как это будет идентификатор выбора действия. Я также знаю, что бросать их на объекты и обратно каждый раз очень интенсивно, поэтому я бы предпочел избежать этого.
Это, вероятно, довольно простой, но он меня в тупик ...
Чтобы дать немного больше информации, в основном это попытка, в зависимости от выбора пользователя, интерпретировать различные данные из входной строки. Если они говорят одно, мне нужно проверить эти данные, а затем захватить их, составив список этих данных и их типов (из этой информации вытекают различные вещи). Проблема в том, что я хотел бы сделать ее расширяемой, поэтому я всегда могу добавить что-то, не придерживаясь строгой структуры, и мне не придется переделывать все при использовании. Мне нравится предложение ArrayList, а также рефакторинг. Я попробую его пересмотреть. – George