티스토리 뷰

CS/JAVA

[JAVA] Wrapper Class, Generic

코딩가딩 2021. 6. 15. 01:04

Wrapper class


기본형 타입 데이터를 객체로 다루기 위해 사용하는 클래스를 래퍼 클래스라고 한다. 래퍼 클래스는 각각 타입에 해당하는 데이터를 인수로 전달받아 해당 값을 가지는 객체로 만들어준다. java.lang 패키지에 포함되어 제공된다.

  • 래퍼 클래스는 산술 연산을 위해 정의된 클래스가 아니므로 인스턴스에 저장된 값을 변경할 수 없는 불변성을 가진다.

    기본 타입 래퍼 클래스
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean
     
  • 값을 참조하기 위해 새로운 인스턴스를 생성하고 생성된 인스턴스의 값만을 참조할 수 있다.
  • 래퍼 클래스는 모두 equals()가 오버라이딩 되어 있어 주소 값이 아닌 객체의 값을 비교한다. 단, Integer 객체는 compareTo()를 사용한다.
  • 기본형 타입 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing)이라고 한다.
  • 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본형 타입 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 한다.

 

 

 

 

Generic


제네릭은 클래스 내부에서 지정하는 것이 아니라 외부에서 사용자에 의해 지정되는 것을 의미한다. 데이터 형식에 의존하지 않고 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법이다.

<> 안에 들어가는 타입을 지정해준다.

 

타입 의미
<T> Type
<E> Element
<K> Key
<V> Value
<N> Number
public class ClassName <T> { ... }
public Interface InterfaceName <T> { ... }

 

장점

  • 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 강하게 방지할 수 있다.
  • 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없어 관리하기가 편하다.
  • 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.

 

? : 와일드 카드

  • 제네릭은 모든 참조 타입이 될 수 있다. 특정 범위 내로 좁혀 타입을 제한하기 위해 ?라는 와일드 카드를 사용한다.
  • ?는 와일드 카드라고 불리며 알 수 없는 타입이라는 의미이다.
<? extends T>	// T와 T의 자식 타입만 가능
<? super T>	// T와 T의 부모(조상) 타입만 가능
<?>		// 모든 타입 가능. <? extends Object>랑 같은 의미

 

 

 

 

 

 

'CS > JAVA' 카테고리의 다른 글

[JAVA] Thread  (0) 2021.06.17
[JAVA] 메모리 구조  (0) 2021.06.16
[JAVA] 변수의 종류  (0) 2021.06.16
[JAVA] 접근 제어 지시자  (0) 2021.06.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함