• Prefer actual domain types with a value that represents absence.
  • Avoid Optional<ConcreteType> in method parameters.
  • Use Optional if the type of the optional parameter is of type Object.