본문 바로가기
Back/Java

[JAVA] Reflection 이용해서 필드값 set 하기

by 은z 2022. 4. 11.

상황

VO클래스에 있는 필드에 접근하여 그 값이 "" (공백)인지 체크하고, "" (공백)이면 null을 set해주어야 한다.

만약 reflection을 사용하지 않고 넘어온 VO를 일일이 확인하고 바꿔주면 

코드가 굉장히 중복되게 나열된다.

 

 

해결방법

public void changeBlankToNull(TestVo testVo){

    // null 변경 처리 ('' -> null)
    Arrays.stream(testVo.class.getDeclaredFields())
            .filter(field -> {
                field.setAccessible(true);
                Object value = null;
                try {
                    value = field.get(testVo);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
                return value != null && value.equals("") && !field.getName().equals("no");
            }).forEach(field -> {
                try {
                    field.setAccessible(true);
                    field.set(testVo, null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });

}

 

댓글