ABOUT ME

코딩 복습하고 공부하는 기록

Today
Yesterday
Total
  • 제한된 지네릭 클래스, 지네릭스의 제약
    공부/Java 2024. 4. 24. 19:54

    제한된 지네릭 클래스, 지네릭스의 제약

     

    지네릭 클래스 제한하기

    - extends로 대입할 수 있는 타입을 제한

     

    예제

    class FruitBox<T extends Fruit> {
    	ArrayList<T> list = new ArrayList<T>();
        ...
    }

    Fruit의 자손만 타입으로 지정 가능하도록 상속관계를 걸어준다.

    이렇게 하면 내가 원하는 종류만 타입 변수로 대입할 수 있게 된다.

     

    - 인터페이스인 경우에도 extends를 사용한다.

      Fruit 클래스와 Eatable 인터페이스를 함께 상속받는다고 가정해보자.

     

    예제

    class FruitBox<T extends Fruit & Eatable> extends Box<T>{}

    ※ 인터페이스를 상속받을 땐 ','(콤마)가 아닌 '&'(앤드)를 사용한다.

     

     

    지네릭스의 제약

    - 타입 변수에 대입은 인스턴스 별로 다르게 가능하다.

    - static 멤버에는 타입 변수 사용이 불가능하다.

    ※ 모든 인스턴스에 공통으로 사용되기 때문이다.

     

    - 배열(객체) 생성할 때 타입 변수 사용은 불가능하고, 타입 변수로 배열 선언은 가능하다.

     

    예제

    class Box<T> {
    	T[] itemArr;	// 가능. T타입의 배열을 위한 참조변수
        	...
        	T[] toArray() {
    //  		T[] tmarr = new T[itemAarr.length];	//에러. 지네릭 배열 생성 불가
    		...
    		}
    }

    T를 사용해 배열 선언은 가능하나, new 연산자를 통해 객체를 생성하거나, 배열을 생성할 수는 없다.

    new 연산자는 뒤에 타입이 확정되어야 하나, T는 확정 지어지지 않은 상태기 때문에 사용할 수 없다.

    '공부 > Java' 카테고리의 다른 글

    지네릭 메서드  (0) 2024.04.25
    와일드 카드  (0) 2024.04.25
    HashMap과 지네릭스  (0) 2024.04.23
    Iterator<E>  (0) 2024.04.22
    지네릭스 용어, 지네릭 타입과 다형성  (0) 2024.04.20
Designed by Tistory.