-
[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 타입이 들어오면 에러가 발생한다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 예외 처리 - 예외 떠넘기기(throws) (0) 2022.02.10 [Java] 자바 예외 처리(try-catch문) (0) 2022.02.10 [Java] 자바 여러 타입을 가지는 배열 만들기 (0) 2022.02.10 [Java] 자바 문자열 비교 (0) 2022.02.10 [Java] 익명클래스 (0) 2022.02.10