Создайте объект, который возвращает несколько объектов в Java - PullRequest
3 голосов
/ 18 января 2011

Я хочу создать объект, который будет содержать и возвращать несколько объектов различных типов.

Какой наилучший подход для этого?Кажется, есть несколько выходов, поэтому мне интересно услышать идеи разных людей.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 18 января 2011

Если вы хотите вернуть все объекты сразу, из одного вызова метода, лучше всего инкапсулировать все объекты в (возможно, внутренний) класс и вернуть экземпляр этого класса.

class Container {
  public static class Container {
    Type1 obj1;
    Type2 obj2;
    ...
  }
  private Type1 obj1;
  private Type2 obj2;
  ...
  public Container getAllObjects() {
    Container container = new Container();
    container.obj1 = this.obj1;
    ...
    return container;
  }
}

(Технически, вы также можете вернуть несколько объектов в массиве Object[], однако я не рекомендую это из-за отсутствия безопасности типов и открытых возможностей для ошибок упорядочения.)возвращайте объекты один за другим, из разных вызовов методов, старые добрые получатели - ваши друзья: -)

class Container {
  private Type1 obj1;
  private Type2 obj2;
  ...
  public Type1 getObject1() {
    return obj1;
  }
  public Type2 getObject2() {
    return obj2;
  }
  ...
}
2 голосов
/ 18 января 2011

Что ж, я вижу для вас 3 способа:

-1) использовать тот факт, что переданные переменные передаются по ссылке.таким образом, вы можете напрямую изменять объект в вашей функции и не беспокоиться о возвращаемых значениях

-2) вы можете просто создать массив объектов:

Object[] returnTab = new Object[numberToStore];

(это не такочень симпатично)

-3) создать объект ReturnObjectContainer

контейнер публичного класса {public ObjectA a;public ObjectB b;

Arraylist list = new list ();

... // добавьте все, что вам нужно для хранения}

2 голосов
/ 18 января 2011

Создайте класс, подобный этому:

class ReturnValue {
   Type1 value1;
   Type2 value2;
}

и вернуть экземпляр, если он из вашего метода, если вы знаете, какие типы вы хотите возвращать все время.

Если вы не знаете, тогда единственный способ - вернуть Object[], содержащий ваши значения.

1 голос
/ 18 января 2011

Разве это не определение всех объектов коллекции (и большинства реализаций интерфейса List, таких как ArrayList)?

Объект коллекции содержит другие объекты и возвращает их через вызов метода?

1 голос
/ 18 января 2011

Что вы подразумеваете под «возвращением»?Насколько я понимаю термины, объекты ничего не возвращают, они просто есть.У них могут быть геттеры, которые возвращают объект конечно.Не могли бы вы рассказать мне о нескольких способах, о которых вы говорите?

Если я вас правильно понимаю, вам нужен класс (объект) с несколькими частными объектами (переменными), которые можно устанавливать и получать через функциичлены).

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