Как инициализировать объекты по списку?

386
03 января 2018, 18:57

Есть класс, например

class Box(){
  int ID;
  String Name;
  double w;
  double h;
  double s;
}

есть список

private List<Integer> lBoxes = Arrays.asList(5,1,7,3,8,51,42);

надо чтобы по этому списку создались экземпляры класса Box() с именами соответственно box5(), box1(), box7() и т.д. по списку.

В последствии мне надо будет обращаться к этим экземплярам класса по этому же списку или другому, чтобы получить поля или присвоить полям значения. например:

box5.ID = 5;
box5.Name = "Ящик номер 5";

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

Как это лучше организовать?

Answer 1

В Java именно так как Вы хотите сделать нельзя. Как вариант можно создать List на нужное количество элементов и обращаться потом по его индексу или Map, где ключ — имя переменной например "box5", а значение это объект класса Box.

for(Integer i : lBoxes) {
    boxesMap.put("box"+i,new Box(i));
}

инициализировать можно сразу

class Box(){
  int ID;
  String Name;
...
 Box(Integer i){
   this.ID=i;
   this.Name="Ящик номер "+ i;
 }
Answer 2

Создавайте в цикле:

private List<Integer> lBoxes = Arrays.asList(5,1,7,3,8,51,42);
private List<Box> boxes = new ArrayList<>();
for(Integer i : lBoxes) {
    boxes.add(new Box(...));
}
READ ALSO
Как инициализировать static final переменную в try catch

Как инициализировать static final переменную в try catch

Добрый деньМне надо инициализировать static final переменную, делаю я это в статическом блоке инициализации

367
Не могу понять описание rinex obs файла

Не могу понять описание rinex obs файла

Здравствуйте, подскажите, пожалуйста, пытаюсь распарсить файл Rinex obs (Файл данных наблюдений)

298
Чем iterator отличается от цикла for в Java?

Чем iterator отличается от цикла for в Java?

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

388
Свойство &ldquo;overflow&rdquo;

Свойство “overflow”

Я уже гуглил на счёт этого свойства, я вроде-бы понимаю смысл его действия, но не всегдаОбъясните: что оно конкретно делает з float элементами,...

315