반응형

타입  변수

  • 지네릭 클래스를 작성할 때, Object타입 대신 타입 변수(E)를 선언해서 사용.

 

타입변수란, 지네릭 클래스를 작성할 때, Object타입 대신 타입 변수(E)를 선언해서 사용한다.

예를 들어서, ArrayList클래스에 있는 Ojbect를 전부 타입변수 E로 바꾸는 것이다.
타입변수 E를 선언하고, Object를 전부 E로 바꾼다.
즉, 원래 일반 클래스였는데 지네릭클래스로 바뀌었다.

우리도 사용할 때 지네릭 클래스로 사용해야 한다.

그러니깐, JDK1.5부터 Object를 포함한 클래스는 지네릭 클래스로 바뀌었다고 생각하면 된다.

지네릭 클래스는 타입변수(E)가 있다.
그래서 타입 변수 <E>를 선언해주고, Object대신에 타입변수E를 사용한다.

변수이름은 여러글자를 써도된다. ex)EE, X, Y
그런데, 기본적으로 타입을 의미하기 때문에 T를 많이 사용한다. 때로는 E도 많이 사용한다.(element)의 약자.
기본적으로 타입변수는 대문자 한글자로 쓰는 것이 보통이다.

 


 

타입 변수에 대입하기

  • 객체를 생성시, 타입 변수(E) 대신 실제 타입(Tv)을 지정(대입)

지네릭 클래스에 객체를 생성할 때에는, 타입변수(E)대신에 실제 타입(Tv)을 지정해야한다.

원래는 <E>였는데 타입을 직접 대입해야 한다.
ArrayList<E> → ArrayList<Tv>

그리고, 타입변수의 타입은 어디에 써주냐면,
참조변수와 생성자에 넣어줘야한다. 그리고 두개의 타입이 일치해야 한다.

타입<E>에 <TV>를 넣어준다. 그러면 이런식으로 바뀐다. Tv가 E에 대입되는 것이다.
원래는 Object였는데, 타입변수<E>에 Tv를 대입하면 <Tv>로 바뀌는 것이다.

즉, <E>에 어떤 타입이 대입되느냐에 따라서 타입이 계속 바뀔 것이다.

 

  • 타입 변수 대신 실제 타입이 지정되면, 형변환 생략가능

예전에는 get() 메서드의 반환타입이 Object여서 Tv타입의 참조변수 t에 저장하려면 형변환이 필요했다.
그런데, 지네릭클래스를 사용하면, 반환타입이 <대입된타입>으로 바뀌었으므로 형변환이 필요없다.

 

반응형

'JAVA' 카테고리의 다른 글

Iterator, HashMap과 지네릭스  (0) 2022.05.04
지네릭스 용어, 지네릭 타입과 다형성  (0) 2022.05.04
지네릭스란?  (0) 2022.05.03
Collections클래스, 컬렉션 클래스 요약  (0) 2022.05.03
HashMap (2)  (0) 2022.05.03