용어/java

[국비][JAVA] 지네릭스(제네릭) 예시를 통해 이해하기

줌인. 2024. 6. 8. 13:42
데이터 타입을 유연하게 지정하여 코드의 재사용성과 안정성을 높이는 기능


항목 설명 예시
정의 클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정 class Box<T> {
 T value;
}
장점 타입 안정성 보장, 코드 재사용성 증가 List<String> list = new ArrayList();
타입 파라미터 클래스/메서드에서 사용하는 데이터 타입을 가리키는 변수 <T>, <E>, <K,V>
제네릭 클래스 특정 데이터 타입에 의존하지 않고,
다양한 타입으로 객체 생성
class Box {
 T value;
}
제네릭 메서드 메서드 내부에서 사용할 데이터 타입을 유연하게 지정 public <T> void print(T t) { }
제네릭 인터페이스 특정 데이터 타입에 의존하지 않고, 다양한 타입으로 구현 interface Comparable<T>
제한된 제네릭 특정 타입이나 그 하위  타입으로 제한된 제네릭 class Box<T extends Number>
와일드카드 제네릭 타입을 모호하게 지정할 때  List<?> list = new ArrayList();

 

 

[예시 코드]

public class ListTest {
    //제네릭을 사용할 경우 컴파일 시 타입을 체크해줌
    //arraylist를 생성할 때 다양한 종류의 객체를 담을 수 있지만, 한 종류의 타입만을 지정해주면
    //타입 안정성이 올라갈 수 있음 (지정된 객체만 담을 수 있음)

    public static void main(String[] args) {
        //이전 예시
        ArrayList ar = new ArrayList();
        ar.add("first");
        ar.add(2);
        ar.add('c');
        ar.add(true); //여러 타입이 들어갈 수 있음
        for(int i=0; i < ar.size();i++) {
            System.out.println(ar.get(i));;
        }
        String firsts = (String) ar.get(0);


        //E는 변수를 의미
        ArrayList<String> ars = new ArrayList<String>();
        ars.add("hello");
        //ars.add(2); //컴파일 에러가 뜸
        //ars.add(false);
    }
}
728x90