• 자바 제네릭의 타입 정보를 유지하는 방법 - Super Type Token

    자바 제네릭의 타입 파라미터를 저장하고 사용하는 방법을 알아봅니다. 제네릭은 코드의 재사용성을 높이고 데이터 타입의 안정성을 높여줍니다. 제네릭이 없었더라면 객체를 담는 컬렉션을 안전하게 사용할 수 없을 것입니다. 아래는 간단한 컬렉션을 구현하고 사용하는 예제를 살펴봅시다. public class MyCollection { static class SimpleCollection { private final Object[] data = new Object[100]; private int...


  • 푸시한 커밋을 리베이스 했을 때 브랜치 정리 방법

    rebase는 커밋 그래프를 이쁘게 만들어주는 일등 공신이죠. 저는 항상 rebase를 이용해서 개발 중인 브랜치를 최신화시키는데요 혼자서 사용하는 개발 브랜치면 상관없는데 이게 다른 사람과 공유하면서 작업할 때는 좀 골때리는 상황이 생깁니다. 아래의 경우를 보겠습니다. A개발자, B개발자 모두 master 브랜치에서 딴 d 커밋을 베이스로 작업하고 있었어요. 그런데 A개발자가 d커밋을 master의 c커밋 위로...


  • 자바 제네릭 와일드 카드 사용 방법과 등장 배경

    자바 제네릭의 와일드카드를 사용하는 방법과 제네릭 타입의 상위/하위타입에 관해 설명합니다. 지금까지 제네릭 타입과 제네릭 메소드를 선언하고 사용하는 방법에 대해 알아보았습니다. 하지만 제네릭은 생각처럼 만만한 개념이 아닙니다. 제네릭을 조금 더 깊이 이해하기 위해서는 주의해야 할 것들과 꼭 알아야 할 것들이 많습니다. 지금부터 제네릭 클래스의 상위/하위 타입에 대해서 알아보도록 하겠습니다. 서브 타입...


  • 자바 제네릭 메소드 선언 방법과 타입 추론

    자바 제네릭 메소드 선언 및 사용 방법, 타입추론으로 얻을 수 있는 이점을 설명합니다. public <T extends Comparable<? super T>> T max(Collection<? extends T> col){ } [리스트 1] 우리의 목표 ` ` 우리는 이 메소드를 한번 읽어 볼 꺼라고 이 고생을 하고 있습니다. 그런데 이 메소드를 정확하게 이해하기 위해서는 조금 더...


  • 자바 제네릭 타입과 extend 키워드로 경계 설정하기

    이 포스트는 자바 제네릭을 사용하는 이유와 제네릭 클래스 선언 방법, 범위 설정하는 방법을 설명합니다. public <T extends Comparable<? super T>> T max(Collection<? extends T> col) 위 메소드 타입은 Collections의 max() 메소드를 약간 정리한 것입니다. 쉽게 읽히시나요? 이 정도쯤은 읽을 수 있다! 라고 하시는 분은 포스트를 읽을 필요가 없습니다. 지금부터 위...