Use the State pattern in Java when behavior changes meaningfully with the object's current state and conditionals start obscuring the model.
State is useful when the question is not “which algorithm did the caller choose?” but “what does this operation mean in the object’s current state?”
This is a good fit for Java domains such as:
The pattern becomes valuable when conditional logic based on state starts to spread across methods and classes. It is weaker when the lifecycle is trivial and a few well-named conditionals remain clearer.