Java 지네릭스 용어, 타입과 다형성
by 볼빵빵오춘기지네릭스 용어
- Box<T> : 지네릭 클래스, T의Box 또는 T Box라고 읽는다.
- T : 타입 변수 또는 타입 매개변수(T는 타입 문자)라 읽는다.
- Box : 원시타입(raw type)라 읽는다.
지네릭 타입과 다형성
- 참조 변수와 생성자의 대입된 타입은 일치해야 한다.(⇒ 다형성일때 조상 자손관계일 때도 안된다!)
- 지네릭 클래스간의 다형성은 성립한다.(여전히 대입된 타입은 일치해야 한다.)
더보기
![](https://blog.kakaocdn.net/dn/xY7ML/btsBxgf8R1j/9KrsWf8ZXr71MLgAKDt531/img.png)
![](https://blog.kakaocdn.net/dn/xY7ML/btsBxgf8R1j/9KrsWf8ZXr71MLgAKDt531/img.png)
⇒ List는 조상, ArrayList는 자손
⇒ 타입은 일치해야한다.
- 매개변수의 다형성도 성립한다.
더보기
![](https://blog.kakaocdn.net/dn/kCcPw/btsBx8Wphsj/GF4jzQPU1FRnyKnoSttnM1/img.png)
![](https://blog.kakaocdn.net/dn/DcrUv/btsBCm6G0DZ/Jx0gKVmnzu14T4gbEltrok/img.png)
![](https://blog.kakaocdn.net/dn/kCcPw/btsBx8Wphsj/GF4jzQPU1FRnyKnoSttnM1/img.png)
⇒ 매개변수에서는 자손도 올 수 있다. 대신 꺼낼때 주의 기존의 list.get(num)하면 Object로 나오지만 Product로 나오며, list.add(new Tv());일때 형변환해서 사용가능하다.
![](https://blog.kakaocdn.net/dn/DcrUv/btsBCm6G0DZ/Jx0gKVmnzu14T4gbEltrok/img.png)
예제 코드
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 ⇒ 에러
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 제한된 지네릭 클래스, 지네릭스의 제약 (0) | 2023.12.08 |
---|---|
Java Iterator, HashMap과 지네릭스 (0) | 2023.12.08 |
Java 타입 변수 (0) | 2023.12.07 |
Java 지네릭스(Generics) (0) | 2023.12.07 |
Java Collections 클래스, 컬렉션 클래스 요약 (0) | 2023.12.07 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기