태투'S/SIL

2022_07_20 컬렉션 클래스에서 제네릭을 사용하는 이유

태투2 2022. 7. 20. 01:18

Answer :

컬렉션 클래스에 저장되는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일 타임에 잡아 낼 수 있어서 사용한다.

 

1. 제네릭이란?

List<Interger> list1 = new ArrayList<>();
List list2 = new ArrayList<>();
Map<String, String> map = new ArrayList<>();

위의 코드와 같이 꺽쇠 안에 클래스 타입이 명시된 패턴의 형식

이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠 안에 포함하여 전달한다.

 

1-1. Java에서 제네릭이란?

  • 컴파일 시 타입 체크를 해주는 기능(compile-time type check) JDK 1.5
  • 객체 타입에 안정성을 높이고 형변환의 번거로움을 줄여줌

2. 제네릭의 장점

  1. 타입을 안정성을 제공(Class Cast Exception - 형변환 에러를 미연에 방지)
  2. 타입 체크와 형변환을 생략할 수 있어서, 코드가 간결해짐
  3. 런타임에 발생할 수 있는 타입 에러를 컴파일 전에 검출한다.

3. 제네릭스 적용 예시

package com.taetoo.genericsStudy;

import java.util.ArrayList;
import java.util.List;

public class MainClass{
	public static void main(String[]args){
    List noGeneriucsList = new ArrayList();
    List <String> strList = new ArrayList<>();
    
    noGenericsList.add("aaaaaa");
    noGenericsList.add(1111);
    // 제네릭을 지정하지 않아 어떤 데이터 형식인지 판단하려면 입력된 곳을 찾아가야 알 수 있다.
    try{
    	for(int i = 0; i < noGenericsList.size();i++){
        
        String str = (String) noGenericsList.get(i);
        System.out.println("index["+i+"]데이터:" + str);
        }
    } catch(exception e){
    	System.out.println("오류가 발생하였습니다.");
        
    }
    for(int i = 0; i < strList.size();i++){
    	String str = strList.get(i)
        System.out.println("index["+i+"]데이터:" + str);
    }
  }
}

 

-> 실행 결과