Допустим, у меня есть класс Foo в Java, в котором есть неизменяемые данные:
class Foo {
final private int x;
public int getX() { return this.x; }
final private OtherStuff otherstuff;
public Foo(int x, OtherStuff otherstuff) {
this.x = x;
this.otherstuff = otherstuff;
}
// lots of other stuff...
}
Теперь я хотел бы добавить вспомогательный метод, который создает значение «одноуровневое» с идентичным состоянием, но с новымзначение х.Я мог бы назвать это setX()
:
class Foo
{
...
Foo setX(int newX) { return new Foo(newX, this.otherstuff); }
...
}
, но семантика setX()
отличается от стандартного соглашения установщика для изменяемых объектов EJB, поэтому почему-то это не так.
Какое имя лучше для этого метода?
Должен ли я назвать его withX()
или newX()
или как-нибудь еще?
edit: дополнительный приоритет в моем случае: у меня есть сценарииклиенты (через JSR-223 и экспортируемую мной объектную модель), которые могут легко получить объект Foo
.Однако громоздко вызывать конструкторов, создавать конструкторов или что-то еще.Поэтому для меня желательно предоставить этот метод для удобства клиентов сценариев.