Если «статический метод фабрики» продолжает возвращать один и тот же объект, это на самом деле не метод фабрики.
Даже java.lang.Throwable
имеет два элемента изменяемого состояния: трассировка стека и первоначальная причина, пока новая версия Java не добавит больше. Любой общий Throwable
должен будет либо расторгнуть контракт fillInStackTrace
, либо вести себя очень странно. Кроме того, повторно использованный Throwable
не может разумно изменить сообщение.
Так что вы могли бы сойти с рук, но хотели бы вы? Почти все проблемы с производительностью (и вы обычно не должны бросать исключения слишком часто) сводятся к fillInStackTrace
. Если вы это выбьете, то мало смысла в повторном использовании.
(я предпочитаю фразу «метод статического создания» вместо «статический метод фабрики», потому что «фабрика» слишком перегружена.)