Я хотел бы спросить вас, действительно ли это плохо от спектакля?
в перспективе, что вместо установки значения в уже
созданный объект, я создаю новый?
Вы задаете нам и себе неправильный вопрос.
Вы не должны беспокоиться о производительности для таких простых классов с носителем данных.
Контрольный ориентир (см. JMH ) и см.
Но с чисто теоретической точки зрения единственными издержками являются создание другого объекта (размер которого в памяти зависит от расположения его членов), дополнительный шаг передачи примитивных значений / ссылок из экземпляр экземпляра для результирующего экземпляра (может быть, еще больше работы для GC? Я бы даже не учел это).
Таким образом, еще несколько циклов процессора.
Посмотрите также на Неизменные , посмотрите, сколько людей и компаний его используют, и спросите себя, стоит ли вам задавать этот вопрос для простых случаев использования.
Возьми этот класс
public class Car {
private String maker;
private int year;
private int kms;
// Getter - setters
}
Размер составляет примерно 16 + 4 + 4 + 4 = 28
байт.
Теперь, используя строитель, такой как
public class CarBuilder {
private String maker;
private int year;
private int kms;
public CarBuilder setMaker(final String maker) {
this.maker = maker;
return this;
}
public CarBuilder setYear(final int year) {
this.year = year;
return this;
}
public CarBuilder setKms(final int kms) {
this.kms = kms;
return this;
}
public Car createCar() {
return new Car(maker, year, kms);
}
}
Размер по-прежнему составляет примерно 16 + 4 + 4 + 4 = 28
байт.
Это означает, что вы будете иметь как минимум удвоенные байты, используемые в куче для только класс с использованием компоновщика.
Однако вам следует подумать о том, чтобы основывался на ссылках . Это означает, что все указатели созданных объектов будут просто скопированы в созданный экземпляр Car
. Объекты по-прежнему будут уникальными в памяти.
После редактирования, возможно, вы пытаетесь сделать Объединение объектов ?
В этом случае рассмотрим Apache Commons Pool .