JAVA

[JAVA]열거형(Enum), 제네릭(Generic) + 래퍼클래스(Wrapper Class)

코딩공대 2022. 11. 30. 09:41
728x90

1. 열거형(Enum)

여러 상수들을 보다 편리하게 선언한고 관리할 수 있게하며, 상수면의 중복을 피하고, 타입에 대한 안정성을 보장
또한, 가독성이 좋고 switch 문에서도 작동이 가능하다.

열거형의 메소드


2. 제네릭(Generic)

타입을 구체적으로 지정하는게 아니라 추후에 지정할 수 있도록 일반화해두는 것, 작성한 클래스 or 메서드의 코드가 특정 타입에 얽메이지 않게 해둔것이다.
여기서 주의할 점은 클래스 변수에는 타입 매개변수를 사용할 수 없다는 것이다.
왜나하면 클래스 변수에 타입 매개변수를 사용하면 클래스 변수의 타입이 인스턴스 별로 달라지기 때문이다.
제네릭 메서드에서의 와일드카드?
기호 '?' 를 와일드카드로 사용할 수 있다.
<? extend T> : 와일드카드에 상한 제한을 두는 것으로, T와 T를 상속받는 하위 클래스 타입만 타입 파라미터로 받을 수 있다.
<? super T> : 와일드카드에 하한 제한을 두는 것으로, T와T의 상위 클래스 타입 파라미터로 받을 수 있다.

래퍼클래스(Wrapper Class)

자바의 자료형은 크게 기본 타입(Primitive type)과 참조 타입(Reference type)으로 나누어진다. 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 발생한다. 이럴 때에 기본 자료타입(Primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(Wrapper Class)라고 한다. 자바는 모든 기본타입(Primitive type)은 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다. 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. 만약 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다.

래퍼클래스의 종류

래퍼 클래스 구조도

래퍼 클래스의 부모는 Object이고 숫자를 다루는 래퍼 클래스의 부모 클래스는 Number 클래스이다.
모든 래퍼 클래스는 최종 클래스로 정의 된다.

박싱(Boxing), 언박싱(Unboxing)

기본타입의 값을 래퍼 클래스로 만드는 과정을 박싱, 반대는 언박싱이라고 한다.