Есть ли быстрый способ назначить несколько переменных класса с помощью аргументов конструктора в Java? - PullRequest
0 голосов
/ 09 февраля 2019

Если у нас есть объект с кучей атрибутов, есть ли простой способ эффективно их назначить в конструкторе?

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

class XYZ {
    int x, y, z;
    XYZ(int x, int y, int z) {
         this.x = x;   
         this.y = y;   
         this.z = z;   
    }
}

Есть ли более эффективный способ (в случае, если у вас есть еще больше переменных)?Я знаю о Builder подходе.Не совсем то, что я ищу, здесь.

Под эффективным я имею в виду меньше и чище код.Теперь много шаблонного кода.Мне просто интересно, есть ли более разумный способ сделать это.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Если у вас есть более 3 аргументов для передачи конструктору, хорошей практикой было бы сгруппировать их в классе.

Так что вместо того, чтобы передать 9 простых аргументов в конструктор, вы передадите 3 объектанапример, содержащий 3 примитива.

Стоимость здесь заключается в том, что вы создадите дополнительный объект.Однако эта стоимость должна быть достаточно низкой с jdk9 и последующим q

0 голосов
/ 09 февраля 2019

В Java вы должны инициализировать каждое параметризованное значение в конструкторе.Я не вижу, как это не эффективно.Если у вас есть еще больше переменных, вам определенно следует снова взглянуть на шаблон построителя, в противном случае, когда ваш объект становится сложным, вы можете создавать встроенные объекты в своем классе.

Также, если вы просто хотите иметьчистый код в вашем редакторе, пожалуйста, взгляните на проект lombok: https://projectlombok.org/features/constructor

Он создаст конструктор во время компиляции, и у вас будет чистый код.

@AllArgsConstructor
public class XYZ {
  private int x, y, z;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...