[Java] Object field 값의 Not Null 체크
아래와 같은 객체가 있을 때, 내부 모든 Field에 대해 NotNull 체크를 하기 위해 어떤 방법이 제일 최선일까 고민을 했습니다.
@Getter @Setter @Builder
public static class OrdShppcstApiParam{
private String itemId;
private String itemRegDivCd;
private Long minOnetOrdPsblQty;
private BigDecimal sellprc;
private String shppMainCd;
private String shppMthdCd;
private String siteNo;
private String splVenId;
private String deliPsblYn;
private String whoutShppcstId;
}
기본적인 방법 - StringUtils.notBlank
if(StringUtils.isNotBlank(param.getItemId()) && StringUtils.isNotBlank(param.getItemRegDivCd) ...) {}
if 문에 모든 필드를 체크하는 것
- 모든 필드를 수기로 작성해줘야 함
기본적인 방법 - Reflection으로 모든 필드를 Get해서 체크
for (Field f : obj.getClass().getFields()) {
f.setAccessible(true);
if (f.get(obj) == null) {
return false; // 하나라도 null 이면
}
}
리플렉션으로 모든 필드를 체크하는 방법
Stream을 사용하는 방법
boolean checkNotNull = Stream.of(param.getItemId(), param.getItemRegDivCd(), ...).allMatch(Objects::nonNull);
스트림과 람다를 사용하면 보다 깔끔하게 구현할 수 있다.
- 특정 필드만 체크하도록 구현할 수 있다
- 대신, 모든 필드를 개발자가 넣어줘야 하는 건 첫번째 방법과 동일하다.
참고문서
https://stackoverflow.com/questions/12362212/what-is-the-best-way-to-know-if-all-the-variables-in-a-class-are-null/42188504
댓글남기기