Hello

Java 지네릭스 용어, 타입과 다형성

by 볼빵빵오춘기

지네릭스 용어

  • Box<T> : 지네릭 클래스, T의Box 또는 T Box라고 읽는다.
  • T : 타입 변수 또는 타입 매개변수(T는 타입 문자)라 읽는다.
  • Box : 원시타입(raw type)라 읽는다. 

 

지네릭 타입과 다형성

  • 참조 변수와 생성자의 대입된 타입은 일치해야 한다.(⇒ 다형성일때 조상 자손관계일 때도 안된다!)
  • 지네릭 클래스간의 다형성은 성립한다.(여전히 대입된 타입은 일치해야 한다.)
더보기

⇒ List는 조상, ArrayList는 자손

⇒ 타입은 일치해야한다.

  • 매개변수의 다형성도 성립한다.
더보기

⇒ 매개변수에서는 자손도 올 수 있다. 대신 꺼낼때 주의 기존의 list.get(num)하면 Object로 나오지만 Product로 나오며, list.add(new Tv());일때 형변환해서 사용가능하다.

 

 

예제 코드

import java.util.*;
import static java.util.Collections.*;

class Product {}
class Tv extends Product {}
class Audio extends Product {}

public class Try {
	public static void main(String[] args) {
		ArrayList<Product> productList = new ArrayList<Product>();
		ArrayList<Tv>      tvList = new ArrayList<Tv>(); // 주석0
//  	ArrayList<Product> tvList = new ArrayList<Tv>(); // 에러. 주석1
// 		List<Tv>           tvList = new ArrayList<Tv>(); // OK. 다형성 주석2 

		productList.add(new Tv());
		productList.add(new Audio());

		tvList.add(new Tv());
		tvList.add(new Tv());

		printAll(productList);
		// printAll(tvList); // 컴파일 에러가 발생한다. 
	}

	public static void printAll(ArrayList<Product> list) {
		for (Product p : list)
			System.out.println(p);
	}
}

주석0,1,2를 차례대로 주석처리하고 보면

주석0 ,주석2 ⇒

주석1  에러

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기