본문 바로가기
Java

제네릭 ( Generic )

by KDW999 2023. 1. 13.

제네릭

ㅡ 메서드나 컬렉션 클래스의 타입을 체크

ㅡ 컴파일 시 체크해주기 때문에 타입 안정성 ↑, 형변환 번거로움 ↓

 

List<String> strList = new ArrayList();

List : 원시 타입

String : 타입 변수 

List<String> : 제네릭 클래스

List strList = new ArrayList();
strList.add("기본 문자열");
String str = strList.get(0); // SOLID 원칙에 어긋난다. 최상위 클래스 object(부모)가 String(자식)이 된다는 꼴 
        // 강제 형 변환하면 사용은 가능함 → (String)strList.get(0);
		// 제네릭을 사용하지 않으면 매 번 형변환 작업을 해줘야 함
        
List<String> strList2 = new ArrayList<>();
strList2.add("기본 문자열2");

제네릭 명시없이 Collection Class클래스를 생성하고 사용할 수 있으나  값을 호출하여 사용하거나 할 때 참조변수 앞에 강제 형변환을 적어줘야한다.

애초부터 제네릭을 명시해주고 사용하면 편리하다.

 

*제네릭은 다형성 X

ㅡ 제네릭 클래스 객체 생성 시 참조변수의 타입과 생성자에서 지정한 제네릭 타입은 일치해야 한다.

List<Integer, Human> list = new ArrayList<Integer, Human>();
List<Integer> list2 = new ArrayList<Human>(); // 에러

 

* 제한된 제네릭

ㅡ 타입변수에 extends 사용하면 특정 타입 자손들만 대입 가능 / 인터페이스도 implements말고 extends 사용

Class Animal<Cat extends Cat1 & Cat2> {};

 

'Java' 카테고리의 다른 글

이클립스, MySQL 파일 연동  (0) 2023.01.26
삼항 연산자  (0) 2023.01.17
스레드 ( Thread )  (0) 2023.01.13
ArrayList  (0) 2023.01.12
컬렉션 프레임워크 ( Collection Framework ) / 제네릭 ( Generic )  (0) 2023.01.12

댓글