Java_26_Generic type

OngTK·2025년 8월 15일

Java

목록 보기
26/35

1. Generic type

1) 정의

여러 가지 타입에서 동작할 수 있도록 만든 키워드

2) 목적

클래스를 정의할 때, 변수 타입을 정하지 않고 인스턴스를 생성할 때 변수 타입을 정함.
즉, 설계시에는 타입을 정하지 않고, 객체 생성시 타입을 정함

다양한 타입의 데이터를 처리할 수 있음

3) 사용법

< >

(1) Class 정의

class 클래스명< 제네릭타입 >{
제네릭타입 변수명;
}

(2) 인스턴스 생성

클래스명< 타입명 > 변수명 = new 생성자명<>();

4) 활용처

컬렉션 프레임워크
ArrayList< 제네릭타입 >

5) 특징

변수의 타입 유연성
코드 중복 제거
잘못된 타입 방지

6) 주의

기본타입을 제네릭타입으로 사용 불가
기본타입 → wrapper class 는 사용 가능

7) 예시

[ 예시 1 ] Box 클래스에, 타입이 정해지지 않은(T) content 변수

class Box<T> {
    T content;
}
public class Practice {
    public static void main(String[] args) {
        Box<String> box3 = new Box<>();         // 생성자의 제네릭 타입은 생략 가능
        box3.content = "자바";
        
        Box<Integer> box4 = new Box<>();
        box4.content = 200;
    } //main end
} // class end

[ 예시 2 ] 배열을 이용한 ArrayList 표현

class miniArrayList<E> {
    // 타입이 정해지지 않은(E) data 배열
    E[] data = (E[]) new Object[10];
    // Super class 인 object의 10칸 짜리 인덱스를 만들고
    // 이를 임의의 E 타입 배열로 강제 변환
}
public class Practice {
    public static void main(String[] args) {
        miniArrayList<String> sList = new miniArrayList<>();
        miniArrayList<Integer> iList = new miniArrayList<>();
    } //main end
} // class end

[ 예시 3 ] 멤버변수의 타입이 정해지지 않은(T,E) DTO class 선언

class Dto<T, E> {
    T value1;
    E value2;
}
public class Practice {
    public static void main(String[] args) {
        Dto<String, Integer> dto = new Dto<>();
        dto.value1 = "String";
        dto.value2 = 100;

        Dto<Double , Byte> dto2 = new Dto<>();
        dto2.value1 = 3.14;
        dto2.value2 = 99;
        
        Dto<Integer, ArrayList<String> > dto3 = new Dto<>();
        dto3.value1 = 3;
        dto3.value2 = new ArrayList<>();
        // DTO 내의 타입으로 ArrayList와 같은 컬렉션 프레임워크 사용도 가능
    } //main end
} // class end
profile
2025.05.~K디지털_풀스택 수업 수강중

0개의 댓글