2014-12-16 2 views
0

Это может быть вопрос, возникший из видения туннеля, но голый со мной.Передача аргументов функции java навалом

Что бы вы использовали, если хотите передать список опций в функцию?

Например, если у вас есть интерфейс к серверу:

public interface Server { 
    public void authUser(String username, String password, <xyz> options); 
} 

Какая структура будет использовать для использования, чтобы передать набор опций? Что-то вроде HashMap?

Причина, по которой я говорю, что это происходит из туннельного зрения, потому что я чувствую, что это противоречит стандартам Java. Java имеет перегрузку метода. Поэтому, если я получаю пламя для поднятия вопроса, который я понимаю. Но в целом, может быть, в разных случаях вы когда-нибудь проходили бы массовые данные в какой-то коллекции, и если да, то какой?

+0

Да, вы можете передавать объемные данные в любом виде объектов коллекции, это не проблема ... что именно ваш вопрос? Структура данных будет зависеть от того, какие данные вы передаете ... – brso05

+0

Также, что связано с перегрузкой метода? – brso05

+0

Hashmap, ArrayList, LinkedList, Array, Object Объект - это несколько структур данных, которые вы могли бы использовать для передачи данных ... – brso05

ответ

1

Option1: Если вы выбираете любые коллекции, такие как List или Set, они являются специфическими для объекта. Я имею в виду,

Позволяет предположить, Set sets = new HashSet(); Если я хочу 5 Объект другого класса, не имеющего отношения к отправке, тогда было бы очень трудно понять, какой объект принадлежит классу в то время как Итерация. Итак, я не рекомендую Коллекции.

Option2: Если вы выбираете карту, то такая же проблема может возникать при получении объекта динамически. Таким образом, этот параметр также не рекомендуется.

Вариант3:

Почему можите создать свой собственный DTO и в этом DTO разместить reqyired структура данных и передать его.

Если вы хотите, чтобы 5 разных объектов проходили, вы можете пройти. Если все имеют одинаковый тип, вы можете использовать Collection или array или Variable Arguement на основе вашего scenerio.

0

Я думаю, что любой Serializable - это именно то, что нужно. Если вы можете сериализовать объект, то вы можете передать (сохранить, передать ...) его, передав его свойства навалом. Какой формат сериализованных данных выбрать, это другой вопрос.

0

Это зависит от данных, которые вы хотите передать.

  1. Вы можете использовать карту (hashmap), если вы передаете пары ключ-значение.
  2. Если это просто список различных объектов, вы можете использовать List (ArrayList)
  3. Другой вариант - создать DTO (объект передачи данных) с помощью методов getter и setter.
  4. Возможно, вы захотите взглянуть на функцию VARARGS, которая была представлена ​​в JAVA5.
0

Я бы предложил карту [HashMap], чтобы вы могли получить доступ к значениям аргументов через свои ключи.

Смежные вопросы