Java16 의 특성중 Instanceof 를 회고하기 위해 그때 코드를 다시 재사용해 보자.이전글
Map<String,Object> data =newHashMap<>();data.put("key1","aaa");data.put("key2",111);if (data.get("key1") instanceofString s) {log.info(s);}
value 에는 서로 같지 않은 data 타입이 있다. 이때 instanceof 로 꺼내온 data 타입이 무엇인지를 알아내고 타입에따로 비지니스로직을 처리한다. 더 나아가서 String、Integer、Double 등 더 많은 유형의 데이터 타입이 Map 의 value 값으로 있다면 아래와 같이 해야 되지않을까?
하지만 이런 유형의 if else 패턴은 체크포인트가 많아질수로 가독성도 떨어지고 추후 유지보수에도 큰 부담된다. 그러면 switch로 개선해보자.
switch (data.get("key1")) {caseString s ->log.info(s);caseDouble d ->log.info(d.toString());caseInteger i ->log.info(i.toString());default->log.info("");}
어떤가? 코드 읽기가 편해졌다.
여기서 추가로 언급해보자면 Lambda 함수를 써서 break 는 더 이상 쓰지 않아도 되게 됐다.