오늘 분석할 코드는 아래와 같다. 아래 코드의 정확한 원리가 궁금해서 assertThrows에 대해 정리해보고자 한다. assertThrows는 JUnit에서 제공하는 테스트 메소드 중의 하나이다. //memberService.join(member2)하면 IllegalStateException이 일어나야한다는 뜻 IllegalStateException e= Assertions.assertThrows(IllegalStateException.class, ()->memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); 일단 JUnit에서 제공해주는 메소드라고 하니 JUnit이 어떤 프레임워크인지만 아주아주 짧게 정..
Optional을 따로 공부한 적이 없어서 대충 오류만 봤을 때 여태껏 isPresent이랑 ifPresent가 같은 애인줄 알았다 .. 바부 그래서 isPresent()안에 인자로 왜 람다식을 써주는지 이해가안됐다..하지만 다른 메소드였다는것 ㅋ.. 포스트가 너무 짧음 주의 암튼 오늘은 Optional이 뭔지 아주 짧게 살펴보고 isPresent/ifPresent/ifPresentOrElse 메소드에 대해 살펴보도록 하겠다. Optional이란? 존재할 수도 있지만 안 할 수도 있는 객체, 즉, “null이 될 수도 있는 객체”을 감싸고 있는 일종의 래퍼 클래스이다. 원소가 없거나 최대 하나 밖에 없는 Collection이나 Stream이라고 생각해도 좋다. null 때문에 생기는 귀찮음을 핸들링하기 ..
SpringBoot로 Java를 오랜만에 사용하게 되었는데 아래 코드가 원리가 뭔지가 이해가 안돼서 Java 문법을 공부해보았다. 이번 포스트에서는 Stream의 개념을 다룬 후 아래 코드의 동작 원리를 분석해볼 것이다. public Optional findByName(String name) { return store.values().stream() .filter(member -> member.getName().equals(name)) .findAny(); } 일단 개념부터 짚고 넘어가보자. Stream의 용도와 구조 Java8에서부터 지원한 기능으로, 일종의 반복문을 간단하게 나타낸 것이라고 할 수 있다. Stream은 컬렉션이나 배열, 리스트 등에 있는 값들을 참고하여 그 값들에 대해서 연산을 해주는..