ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 제네릭 클래스 및 상속
    프로그래밍 언어/Java 2022. 2. 11. 10:08

    제네릭 클래스

    제네릭 클래스와 인터페이스는 타입을 변수로 사용한다. 즉, 타입 자체가 매개변수다. 제네릭 클래스는 <> 내부에 타입 매개변수를 표시한다. 

     

    아래 코드는 Integer와 String 매개변수로 받는 제네릭 클래스를 정의한 것이다.

    class MyClass<T> {
    	T a;
    	MyClass(T a) {
    		this.a = a;
    	}
    	public void setA(T a) {
    		this.a = a;
    	}
    	public T getA() {
    		return this.a;
    	}
    }
    
    public class jenerictest {
    	
    	public static void main(String[] args) {
    		
    		MyClass<Integer> a = new MyClass<Integer>(10);
    		MyClass<String> a2 = new MyClass<String>("홍길동");
    		
    		System.out.println(a2.getA());
    	}
    }

    클래스 정의

    일반타입은 T를 사용하고, 2개 이상일 경우 S, U를 사용한다.

    class 클래스이름<타입매개변수> {
    	필드;
    	메소드;
    }

    클래스 생성자 호출

    위 코드의 예시에서는 적용타입을 Integer, String으로 다르게 설정했다. 적용타입은 기초타입을 사용할 수 없고 참조타입만 사용할 수 있다.

    제네릭 클래스 <적용타입> 변수 = new 제네릭클래스<적용타입> ();

    2개 이상의 매개변수를 가지는 제네릭 클래스

    2개 이상의 매개변수는 쉼표(,)로 구분하여 나열한다.

    public class MyClass<K, V> {
    	private K a;
        private V b;
        
        public MyClass(K a, V b) {
        	this.a = a;
            this.b = b;
        }
    }

    제네릭 상속 및 타입 한정

    제네릭 클래스의 매개변수인 T에 들어갈 수 있는 참조변수의 타입을 한정시킬 때 제네릭 상속을 사용한다. 키워드는 extends이다.

    제네릭 상속

    class MyClass<T extends Number> {
    	// T로 들어오는 매개변수는 Number로 한정된다.
    }

    위 코드는 Number 클래스를 상속받는 제네릭 클래스이다. T에 들어갈 수 있는 타입은 Number 클래스의 범위에 한정된다. 예를 들어 T에 String 타입이 들어오면 에러가 발생한다.

Designed by Tistory.