Java 5

private 필드에 ReflectionUtils로 값을 셋팅해서 테스트 코드 작성

private 필드가 있는 클래스 @RequiredArgsConstructor @Service public class TestEventService { private final SomeClient someClient; @Value("${test.event.key}") private String key; @Value("${test.event.sequence}") private String sequence; 위와 같이 Service 클래스에 private 접근 제어자로 선언된 필드가 있었다.@Value 어노테이션을 통해 빌드 환경별 고유 값을 가져오고 있는 상황이다.어느 환경에서도 불변의 값이 아닌 환경에 따라 다른 값을 가져오는 상황이다보니, 유닛 테스트를 작성하는데 애로사항..

Optional을 막 쓰지 말자

개요작성 계기Optional이란?왜 막 쓰면 안되지?결론 0. 작성 계기회사에서 작업 도중 위와 같이 코드 리뷰가 들어왔다.Java나 Kotlin으로 개발할때 Null Check 로직이 필요되는 부분이라면 Optional을 빈번하고 사용하고 있었는데,Optional의 장점만 알고있었지 단점은 잘 모르고 있다는 생각이 들었다.이 기회에 Optional의 장점과 단점을 정리해보자. 1. Optional이란?Optional은 Java 8부터 추가된 컨테이너 클래스이다.// 기존 null 체크if (account != null) { processAccount(account);}// Java8의 Optional 적용var accountType = Optional.ofNul..

HackerRank : A Tale of Two Stacks

Queues: A Tale of Two Stacks | HackerRank Create a queue data structure using two stacks. www.hackerrank.com 문제 요약 2개의 Stack을 이용해서 Queue와 동일한 로직을 만들어 보세요. input 값으로 다음과 같이 입력이 가능합니다 q : 쿼리의 갯수 (최초에 1회 입력) 1 x : x를 큐에 저장 2 : 큐의 맨 앞 (가장 오래된 값)을 제거 3 : 큐의 맨 앞 (가장 오래된 값)을 출력 핵심 요약 해당 LeetCode의 문제와 흡사한 문제 유형입니다. 필요한 기능은 크게 다음 3가지로, 각각을 2개의 Stack을 이용해 구현합니다. enqueue : 큐에 값을 저장 dequeue : 큐의 첫 번째 값을 제거 ..

ArrayList 인터페이스를 구현한 클래스 활용

개요 1. 유저의 ID와 Name이 저장된 Member 객체를 구현한다. 2. Member 객체를 저장할 ArrayList를 구현한다. 3. Member 객체를 저장하여 특정 유저는 제거한 뒤, 남아있는 객체들의 정보를 출력한다. 코드 구성 Member : 멤버 정보를 저장할 객체 MemberArrayList : 멤버 정보를 ArrayList로 저장할 클래스 MemberArrayListTest : 멤버 정보를 저장하고 출력할 main 클래스 코드 예제 [ Member ] package ch10; public class Member { private int memberId; private String memberName; public Member(int memberId, String memberName) ..

Generic 메소드 활용

Generic 메소드의 활용 1. 두 점을 입력받아 한 점을 왼쪽위 모서리, 다른 한쪽을 오른쪽아래 모서리로 지정한다. 2. 사각형의 넓이를 double 형으로 계산하여 출력한다. 단, 입력되는 모서리의 값은 Integer일수도 있고, double일수도 있다. 코드 구성 GenericMethod : 두 점을 통해 사각형의 넓이를 구해 출력할 main 클래스 Point : 두 점을 저장할 제네릭 클래스 사각형의 넓이를 구하는 코드 예제 [ Point ] package ch07; public class Point { T x; V y; Point(T x, V y){ this.x = x; this.y = y; } public T getX(){ return x; } public V getY(){ return y;..