목차


<aside>

</aside>

래퍼(Wrapper) 클래스


참조 타입 데이터가 필요할 때

Java 에는 기본 타입(Primitive Type)과 참조 타입(Reference Type)이 있다. 프로그래밍을 하다 보면 기본 타입 → 참조 타입으로 바꿔야하거나 참조 타입만 써야하는 경우가 있다.

예를 들어 메서드의 인수로 객체 타입만이 요구될 때이다.

// 인자로 참조형만 받을 때
public Integer sayAge(Integer age) {
		return age;
}

// 제네릭 파라미터는 참조형만 가능하다.
@FunctionalInterface
public interface Comparator<T> {
		...
}

멀티스레드 환경에서 동기화 데이터를 사용할 땐 참조 타입만 가능하기도 하다.

Object lock = new Object();
...
synchronized(lock) {
		...
}

래퍼 클래스란

image.png

이럴 때 기본 타입을 객체로 다루기 위해 필요한 클래스래퍼 클래스이다. 자바는 모든 기본 타입을 객체로 바꿀 수 있다. 이러한 객체를 포장 객체라고도 한다.

포장 물건을 바꿀 수 없듯이, 래퍼 클래스로 감싸고 있는 기본 타입 값은 수정할 수 없다. java9 이전에는 new 키워드를 사용했지만, java9 이후에는 단순히 참조 클래스로 래퍼 클래스를 선언하면 된다.

// java9 이전
Integer int = new Integer(4);
// java9 이후
Integer int = 4;

자동 (언)박싱

이름에서도 유추할 수 있듯이 두 용어의 차이점은 다음과 같다.

박싱 : 기본 타입의 데이터 → 래퍼 클래스의 인스턴스 언박싱 : 래퍼 클래스의 인스턴스 → 기본 타입의 데이터