본문 바로가기

전체 글8

[Generic] 1. 개념과 사용이유 서론 개인적으로 자바에서 가장 어려운 부분이 제네릭이라고 생각한다. 무의식중에 제네릭을 사용하면서도 잘 알지 못하는 이런 웃지못할 상황을 한번 해결해보고자 제네릭을 정리하는 시간을 가져본다. 먼저 `List`만을 사용하여 코드를 작성해보자. List list = new ArrayList(); list.add(1); // 컴파일 에러 int a = list.iterator().next(); 다음 코드는 컴파일 에러가 발생할 것이다. 그 이유는 형변환을 해주지 않았기 때문이다. 따라서 우리는 다음과 같이 코드를 변경해야 한다. int a = (int) list.iterator().next(); 여기서 잠깐! 한번 생각을 해보도록 하자. list가 반환하는 타입이 int인 것을 보장하는 조건이 있는가? 현재 .. 2022. 2. 21.
아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 서론 정적 팩터리 메서드와 생성자는 똑같은 제약사항이 하나 있다. 선택적 매개변수가 많을 경우 적절하게 대응하기 어렵다는 점이다. 개발자들은 이런 상황이 생기면 `점층적 생성자 패턴`을 주로 사용해왔다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자.... 등 다양하게 생성자를 늘려가는 방식을 `점증적 생성자 패턴`이라고 한다. 이런 생성자 패턴은 무엇이 문제가 있을까?? 사용자가 원하지 않는 매개변수까지 포함해서 값을 넘겨줘야 한다는 것이다. 매개변수가 많지 않으면 어찌어찌 사용할 수 있지만 너무 많아진다면 상당히 곤란해질 것이다. 이런 점층적 생성자 패턴의 대안은 없는 것일까?? Effective Java에서는 2가지 대안으로 제시하고 있다. 자바빈즈 패턴 매개변수가.. 2022. 2. 21.
아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 서론 객체를 생성 할 때 일반적으로 사용되는 방법은 `public 생성자`를 사용하는 방법일 것이다. 하지만 `생성자` 말고도 객체를 생성하는 방법이 있는데 바로 오늘 포스팅의 주제인 `정적 팩터리 메서드`를 사용하는 방법이다. 정적 팩터리 메서드를 설명함에 2가지 방법을 통해 객체를 생성하는 방법을 코드로 살펴보도록 하자. 생성자를 활용한 객체 생성 public class Character { private int strStat; private int dexStat; private int intStat; private int luckStat; public Character(int strStat, int dexStat, int intStat, int luckStat) { this.strStat = str.. 2022. 2. 20.
[레벨 1 학습] git 정복하기 서론 git은 분명 처음 시작하면 어렵다고 느껴진다. (그냥 어려운거 같기도..?) 하지만 극복해야 할 부분이기 때문에 이번 글을 통해서 확실히 정리를 해두고자 한다. (해당 내용은 우아한테크코스의 미션을 수행하기 위한 과정을 일정 부분 참고하여 글을 작성하였습니다.) (해당 글에서는 용어에 대한 자세한 설명은 하지 않습니다. 용어에 대한 내용은 구글링으로 참고해주시면 되겠습니다.) 브랜치 브랜치는 어떤 의미일까?? 브랜치란 동일한 소스코드 내에서 독립적으로 어떤 작업을 진행하기 위한 개념을 말한다. 각 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시해 진행할 수 있다. 저장소의 가장 상단에는 'main(master)'라는 브랜치가 있다. 'main' 브랜치는 모든 소스코드의 최상단에 .. 2022. 2. 19.