Java/객체지향

[객체지향][제네릭스] - 25. 제네릭스와 타입변수

얄루몬 2022. 2. 14. 18:42

📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.

 

https://youtu.be/VJheFhw_fmU?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 


[타입 변수란?]

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

 

  • T 혹은 E를 많이 사용한다.

 

  • 객체를 생성시, 타입 변수(E) 대신 실제 타입(Tv)을 지정(대입) 
    • ArrayList<Tv> tvList = new ArrayList<Tv>( );
  • 타입 변수 대신 실제 타입이 지정되면, 형변환 생략 가능.

 

 

 

[실습]

package javajungsuk;

import java.util.ArrayList;

class Tv{}
class Audio{}


public class GenericTest {
	public static void main(String[] args) {
		ArrayList<Tv> list = new ArrayList<Tv>(); //Tv타입의 객체만 저장가능
		list.add(new Tv());
		//list.add(new Audio());
		
		
		//Tv t = (Tv)list.get(0);
		Tv t = list.get(0);
		System.out.println(t);
	}
}
  • Tv객체만 담을 수 있기 때문에 리스트에 Audio는 넣을 수 없다.
  • Tv로 타입을 정해주었기 때문에 형변환 생략가능하다.