To answer my own question, it looks like none of the other int-like fields in the rtb struct uses the Optional<> annotation. This is probably for efficiency reason as it avoids heap allocation and an extra layer of indirection. In which case, using an enum is acceptable.