Есть ли более краткий способ создания экземпляров 5 объекта A, 3 объекта B, 1 объекта C, 1 объекта D, все внутри одного метода? - PullRequest
0 голосов
/ 06 июля 2019

В настоящее время я работаю через модуль Objects на Hyperskills.org.Одна из задач кодирования - создать пять юнитов, трех рыцарей, одного генерала и одного доктора.Нам дано определение класса для каждого объекта, и у каждого объекта есть конструктор, который устанавливает одно поле String.

Я принял приглашение и только что создал экземпляр x-номера класса X.

public static void createArmy(){
  Unit unit1 = new Unit("U1");
  Unit unit2 = new Unit("U2");
  Unit unit3 = new Unit("U3");
  Unit unit4 = new Unit("U4");
  Unit unit5 = new Unit("U5");

  Knight knight1 = new Knight("K1");
  Knight knight2 = new Knight("K2");
  Knight knight3 = new Knight("K3");

  General general1 = new General("G1");

  Doctor doctor1 = new Doctor("D1"); 
}

Компилятор принимает мой ответ, но говорит: «Правильно, но его можно улучшить».

Пожалуйста и спасибо: как еще можно улучшить этот код?

1 Ответ

0 голосов
/ 06 июля 2019

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

public static void createArmy(int units, int knights, int generals, int doctors){
   Unit unit = new Unit[units];
   Knight knight = new Knights[knights];
   General general = new Generals[generals];
   Doctor doctor = new Doctors[doctors];
   for(int x = 0; x < units;x++){
       unit[x] = new Unit("U"+(x+1));
   }
   for(int x = 0; x < knights;x++){
       knight[x] = new Knight("K"+(x+1));
   }
   for(int x = 0; x < generals;x++){
      general[x] = new General("G"+(x+1));
   }
   for(int x = 0; x < doctors;x++){
      doctor[x] = new Doctor("D"+(x+1));
   }
}
...