Search code examples
javanullpointerexceptionsetter

What is the efficient way of null and empty check in setter


I need to add null and empty checks to each of the 27 fields in my DTO class, and I'm searching for the most effective method to accomplish it. Can anyone suggest any ideas?

private String settingType;
private String settingCode;
private String executionEndDate;
private String startToday;


        if (!ObjectUtils.isEmpty(updateRequest.getSettingType())) {
            builder.setSettingType(updateRequest.getSettingType());
        }
        if (!ObjectUtils.isEmpty(updateRequest.getSettingCode())) {
            builder.setSettingCode(updateRequest.getSettingCode());
        }
        if (!ObjectUtils.isEmpty(updateRequest.getExecutionEndDate())) {
            builder.setExecutionEndDate(updateRequest.getExecutionEndDate());
        }
        if (!ObjectUtils.isEmpty(updateRequest.isStartToday())) {
            builder.setStartToday(updateRequest.getStartToday());
        }


Solution

  • We can use this method using consumer

    import java.util.function.Consumer;
    
        private <T> void setFieldIfNotEmpty(Consumer<T> setter, T value) {
            if (ObjectUtils.isNotEmpty(value)) {
                setter.accept(value);
            }
        }
    
    

    Then use the above method for null and empty check as well

    
            setFieldIfNotEmpty(builder::setSettingType, updateRequest.getSettingType());
    
            setFieldIfNotEmpty(builder::setSettingCode, updateRequest.getSettingCode());
    
            builder.setStartToday(updateRequest.getStartToday());
    
            setFieldIfNotEmpty(builder::setExecutionEndDate, updateRequest.getExecutionEndDate());
    
    

    Like this