Java builder for user contact information, with optionals
My understanding from a builder is a bit different. In my opinition, the User should not have a dependency to the Builder (you have a bidirectional dependency which is usually bad anyway). With that said, use the User as member variable within your builder:

public class UserBuilder {
  private User user = new User();

  public UserBuilder withUsername(String username) {
    user.setUsername(username);
  }

  public User build() {
    return user;
  }
}


I also prefer a verb in my method names (they should have, actally, but in that case I think it's okayish), that's why I use 'with' as prefix; And I explicitly do not use not 'set' as prefix, to distinguish it from the setter of the User type.

If you do it like that, the 'actual building' of the user is within the builder and not in the User - and the User type is kept quite stupid.

It might seem a bit strange, that the 'build' method doesn't actually build, but non-persistent built types are often only used for unit testing. The sweet part about builders, you can expand them to persist your built types or other fancy requirements.