↓
멘토님이 주신
링크Optional 키워드
call by value
→ JVM
→ 메모리 구조
→ heap, stack...
자바는 call by 무엇인지 객체지향이란 객체지향의 4대 특성 객체지향을 어떻게 하면 잘하는가? 여기에 대해서 기본적으로 대답이 나와야 된다고 생각합니다. 여러분 다 대답하실수 있죠? 그림으로도 그려줘~
📝 Optional 정리
-
orElse(new ...)
대신orElseGet(() -> new ...)
- 예제코드
- 참고 링크
orElse(...)
에서...
는Optional
에 값이 있든 없든 무조건 실행된다. 따라서...
가 새로운 객체를 생성하거나 새로운 연산을 수행하는 경우에는orElse()
대신orElseGet()
을 써야한다.
@Test @DisplayName("orElse vs orElseGet 차이는?") void orElseVsOrElseGet() { Person person = new Person("hello"); Optional<Person> opt = Optional.ofNullable(person); // 💩 값이 빈값이 아님에도 실행된다. opt.orElse(new Person("orElse executed")); // ✨ 값이 빈값이면 실행되지 않는다. opt.orElseGet(() -> new Person("orElseGet executed")); } class Person { public String name; public Person(String name) { logger.info("created Person : {}", name); // ⚡️ 실행 여부 체크를 위한 로그 this.name = name; } }
↓
orElseVsOrElseGet()
실행 결과...created Person : hello ...created Person : orElse executed
- 단지 값을 얻을 목적이라면
Optional
대신null
비교 - 면접용 한줄 멘트