Java 12

2017. 2. 14. 22:20Work/Java

728x90
반응형

제네릭(Generic)

ex) ArrayList<String> strList = new ArrayList<String>(); 처럼 <>은 다이아몬드 지시자 라고 하며 지시자 안에 클래스를 선언해서 사용, <String>, <Integer>, <Double> 사용 가능

public class ValueMapper<T>{ <- 와일드 카드로 제네릭 기법을 사용하겠다고 먼저 선언

private T t; <- 클래스 변수의 데이터형으로 와일드 카드를 사용할 수 있습니다.

public ValueMapper(T t){ <- 이처럼 매개 변수의 데이터형으로도 사용 가능

this.t = t;

}

public T getValue(){ <- 메소드의 반환 데이터형으로도 사용 가능

return this.t;

}

}

- 클래스 내부에서 사용하는 형(Type)을 다이아몬드 지시자로 받을 수 있다.

지시자를 사용해서 데이터형을 명시하지 않으면 제네릭 특징을 사용할 수 없다.

- 명확하지 않은 형 변환 과정을 생략할 수 있다.

제네릭 클래스를 인스턴스하는 과정에서 사용된 클래스는 형 변환을 생략할 수 있다.

- 하나의 클래스로 다양하게 처리할 수 있다.

하나의 클래스를 개발해서 여러 방면으로 재사용 가능

와일드 카드

다이아몬드 지시자 안에 선언된 문자, 클래스가 아닌 기호

- E(Element) : 외부에서 입력하는 클래스가 제네릭 클래스 내부에서 요소로 사용될 때 사용

- K(Key) : 외부에서 입력하는 클래스가 제네릭 클래스 내부에서 키로 사용, 보통 V 키워드와 같이 사용, Hashtable이나 Hashmap과 같이 Key/Value 데이터 저장시 Key의 클래스형 결정

- V(Value) : 외부에서 입력하는 클래스가 제네릭 내부에서 값으로 사용될 때 사용

- T(Type) : 외부에서 입력하는 클래스가 제네릭 클래스 내부에서 타입으로 사용될 때 사용

- N(Number) : 외부에서 입력하는 클래스가 숫자 형태로 사용될 때 사용, Integer나 Double등

- ? : 모든 클래스를 의미, Object 클래스로 인식, 클래스 선언부에 다이아몬드 지시자로 사용 불가, 확장 문법에서 사용

- S, U : 중복된 와일드 카드 문자 선언을 피하기 위해서 추가적으로 사용

주의 사항

- 클래스 선언부에 같은 와일드 카드 문자는 중복해서 사용 불가

- 클래스 선언부에 사용한 와일드 문자만 클래스 내부에서 사용 가능

-> 포괄적인, 통칭의라는 의미를 가지고 있으며 클래스 내부에서 사용할 타입을 외부에서 지정하는 기법을 의미한다.

728x90
반응형

'Work > Java' 카테고리의 다른 글

Java 14  (0) 2017.02.17
Java 13  (0) 2017.02.14
Java 11  (1) 2017.02.13
Java 10  (0) 2017.02.10
Java 09  (0) 2017.02.05