728x90
미션 도중 생긴 고민 💭public Cars(List carNames) { ArrayList cars = new ArrayList(); for (String carName : carNames) { cars.add(new Car(carName)); } this.cars = cars; } Cars 객체를 생성할 때, List형태의 carNames를 입력받은 뒤,For-Loop 문을 통해 cars 필드를 초기화 해주었다. 하지만 For-Loop문을 생성자 로직에 적용하니 개인적으로 생성자 로직이 지저분하다는 생각이 들었다.때문에 Stream을 사용하여 짧고 가독성있는 코드로 리팩토링하여 사용하고자 하였다. 그리고 이때 머릿속에 한가..
생성자 체이닝(Constructor Chaining)이란?생성자 체이닝은 생성자가 2개 이상일 경우, 전체 인스턴스 필드의 값 초기화를 담당하는 하나의 주 생성자를 두고 이 외의 부 생성자들은, 자신보다 상위의 부 생성자를 호출하는 체이닝 구조를 거쳐 최종적으로 주 생성자를 호출하여 객체를 생성하도록 만드는 방식이다.즉, 실제 객체 초기화를 담당하는 주 생성자 이 외에는 상위 생성자를 호출해나가는 구조인 것이다. 적용 기존 코드public Player(final String name) { super(Cards.createEmpty()); this.name = new Name(name);}public Player(final String name, final Cards cards) { super(cards..
자바에서의 개행 📃본인은 보통 자바의 문자열 내에서 라인을 개행할 때 아래와 같이 개행하곤 했다.System.out.println("안녕하세요\\n"); 그러던 중, 조원과의 대화를 통해 놓치고 있던 부분에 대한 하나의 인사이트를 얻게 되었다.그건 바로 개행 문자는 OS별로 상이하다는 점이다. 이전에 대학 강의에서 배웠던 것이 어렴풋이 기억이 나긴 하지만 정확히는 기억이 나질 않아 찾아보았고그 결과 개행 문자가 3종류나 존재하고 있으며, OS 별로 상이한 경우도 존재함을 알 수 있었다. 개행문자 종류 CRLF(\r\n), CR(\r), LF(\n)Windows 운영체제: CRLF(\r\n)Unix 계열: LF(\n)Mac: CR(\r)이후 Macintosh: LF(\n) 🧐 그럼 \n 없이 어떻게..
🧐 캐싱 방식 사용 시에 메모리 사용량을 최소화하는 방법은 무엇일까? @Test @DisplayName("메모리 사용량을 최소화하는 방법은 무엇일까?") void 메모리_사용량을_최소화하는_방법은_무엇일까() { // TODO: 메모리 사용량을 최소화하는 방법을 고민 후 개선해보세요. record Position(int value) { private static final Map CACHE = new ConcurrentHashMap(); public static Position startingPoint() { return valueOf(0); } public..