Как объявить динамический объектный массив в Java? - PullRequest
17 голосов
/ 08 октября 2010

Я хочу задать вопрос о Java.У меня есть пользовательский класс объектов, учащийся, который имеет 2 члена данных, имя и идентификатор.А в другом классе я должен объявить этот объект [] (например, student stu[?];).Тем не менее, я не знаю размер массива объектов.Можно ли объявить массив объектов, но не знаете размер?спасибо.

Ответы [ 4 ]

22 голосов
/ 08 октября 2010

Как вы уже, наверное, поняли, обычные массивы в Java имеют фиксированный размер (размер массива изменить нельзя), поэтому для динамического добавления элементов в массив вам необходим массив с изменяемым размером. В Java массивы с изменяемыми размерами реализованы как класс ArrayList (java.util.ArrayList). Простой пример его использования:

import java.util.ArrayList;

// Adds a student to the student array list.
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student());

Скобки <Student> (функция, называемая обобщением в Java) являются необязательными; Однако вы должны использовать их. По сути, они ограничивают тип объекта, который вы можете сохранить в списке массивов, поэтому вы не должны хранить объекты String в массиве, полном объектов Integer.

18 голосов
/ 08 октября 2010

Пользователь ArrayList вместо. Он будет расширяться автоматически по мере добавления новых элементов. Позже вы можете преобразовать его в массив, если вам нужно.

В качестве другого варианта (не уверен, что именно вы хотите), вы можете объявить поле Object[] и не инициализировать его немедленно.

1 голос
/ 30 августа 2013

Это невозможно, нам нужно указать размер массива при объявлении массива объектов;

  1. один способ объявить массив объектов

    student st[];
    st=new student[]3;
    
  2. второй способ

    student st[]=new student[5];
    

в обоих случаях не создаются объекты, только пространство выделяется для массива.

st=new student[1];

это создастновый объект;

0 голосов
/ 08 октября 2010

Вы можете объявить как: Student stu[]=null; и создать его с фиксированным размером: stu[]=new Student[10], пока не сможете узнать размер.Если вам нужно использовать массив.

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