[Java] 제네릭

쓰옹·2022년 11월 22일
0

📙 Java 잡아🤏

목록 보기
13/25
post-thumbnail

제네릭(Generic)

  • 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 한다.

    • 여러 참조 자료형이 쓰일 수 있는 곳에 특정한 자료형을 지정하지 않음
    • 클래스나 메소드를 정의한 후 사용하는 시점에 자료형 지정
  • 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법

    • 컴파일 시의 타입체크를 해주는 기능
import java.util.ArrayList;
// 실행 시 에러
public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add("30");   //String

        Integer i = (Integer) list.get(2);  //컴파일 시에는 에러 없음
                                   //---를 Object로 인식했기 때문에 Integer로 형변환하는 것은 문제없음
                                   // but 인덱스 2의 요소는 String이기 때문에
                                   
        System.out.println(list);  // 실행시 형변화 에러 발생
    }
}
// java.lang.String cannot be cast to java.lang.Integer

// 컴파일에서 에러를 잡아 바꿔줌
public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(10);
        list.add(20);
        list.add(Integer.valueOf("30"));  //-> list.add(30)
        
//      Integer i = (Integer) list.get(2);
        Integer i = list.get(2); //형변환 생략 가능

        System.out.println(list);
    }
}
// [10, 20, 30]
  • 안정성이 높아짐
    • 잘못된 형변환 막을 수 있음
    • 타입 체크 강화

형식

public class 클래스명<T> {  // <T> : 타입인자. 자료형 매개변수  
	...
}

public interface 인터페이스명<T>{
	...
}
  • 자주 사용되는 타입인자 약어
    • <T> == Type
    • <E> == Element
    • <K> == Key
    • <V> == Value
    • <N> == Number
    • <R> == Result






🧐 reference

박은종, 『Do it! 자바 프로그래밍 입문』, 이지퍼블리싱(주), 2018
스파르타코딩클럽 <Java 실무 기초 KDT 실무형 스프링 백엔드 엔지니어 양성과정 1회차>
[자바의 정석 - 기초편] ch12-1 지네릭스란?

profile
기록하자기록해!

0개의 댓글