2010-10-08 2 views
16

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

ответ

17

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

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

+1

-1: Нет примера кода. Я предпочитаю этот ответ, потому что они приложили все усилия и фактически дали достаточно информации, что дальнейший поиск не требовался после прочтения их ответа: http://stackoverflow.com/a/3887507/901641 – ArtOfWarfare

20

Как вы, наверное, уже выяснили, регулярные массивы в 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()); 

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

+0

Массивы на Java не неизменный. Вы можете легко выполнить 'myArray [2] = 13', тем самым изменив массив. Возможно, вы имели в виду, что их размер не может быть изменен? –

+0

Да, это то, что я имел в виду, спасибо за это. Я объясню это в своем ответе. – agentbanks217

0

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

1

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

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

    student st[]; 
    st=new student[]3; 
    
  2. второго путь

    student st[]=new student[5]; 
    

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

st=new student[1]; 

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

+0

Если студент - это класс, вы должны назвать Студента капиталом S. –

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