Я заметил, что класс java.time.Period содержит несколько методов экземпляра, которые ведут себя так же, как доступные статические методы factory.
-
.withDays()
ведет себя так же, какPeriod.ofDays()
-
.withMonths()
ведет себя так же, какPeriod.ofMonths()
-
.withYears()
ведет себя так же, какPeriod.ofYears()
Эти методы экземпляров сбивают с толку, поскольку они создают новый Период и возвращают их, но без учета состояния Периода, на который они вызывают.
Period p = Period.ofWeeks(3);
p = p.withDays(2);
Кажется логичным, что это вернет период в 3 недели, 2 дня, но он возвращает только период в 2 дня. Это то же самое, как если бы я звонил Period.ofDays(2)
.
Кроме того, существует пять других статических factory методов без аналогичных методов экземпляра.
Итак, есть ли причина, что эти три метода экземпляра будут существовать? Если да, то какой прецедент?