Я бы так не делал, потому что если состояние не найдено для chatId, то это точно не обязанность класса это состояние создавать. Класс лишь возвращает состояние, если оно есть, а теперь получается. что класс еще и за создание этого состояния отвечает. А если объект состояния сложный, то в сущность придется передать целую фабрику, что как минимум принцип единой ответственности нарушает.
В таком случае, лучше вернуть null и делать проверку на null. Либо поступить правильнее и создать функцию:
public boolean checkState(Long chatId)
{
return false;
}
и исходя из наличия состояния его либо вернуть, либо создать.