반응형
Generic 이란
- 아직 타입이 정해지지 않은 데이터 타입이라고 쉽게 생각할 것.
- 주로 Java Collection에서 많이 사용된다.
Interface Generic 사용법
interface ExampleInterface<T1, T2> {
T1 test1 (T2 t);
T2 test2 (T1 t);
}
public class ExampleClass implements ExampleInterface<String, Integer> {
@Override
public String exMethod1(Integer t) {
return null;
}
@Override
public Integer exMethod2(String t) {
return null;
}
}
Method Generic 사용법
클래스에 제네릭 타입을 선언하지 않고 각 메소드마다 제네릭 타입을 선언해서 사용 가능함. 메소드의 파라미터의 T가 선언되어 있다면, 리턴타입 바로앞에 <T> 제네릭 타입을 선언해야한다.
class TestMethod {
public static <T> List<T> exampleMethod(List<T> list, T item) {
list.add(item);
return list;
}
}
WildCard Generic 사용법
- <?> : 모든 객체 자료형, 내부적으로는 Object로 인식
- <? super 객체형> : 명시된 객체자료형의 상위 객체, 내부적으로는 Object로 인식
- <? extends 객체자료형> : 명시된 객체자료형을 상속한 하위객체, 내부적으로는 명시된 객체 자료형으로 인식
class TestWildCard {
public List<? extends Object> wildMethod1() {
return new ArrayList<Long>();
}
public <T> List<? extends String> wildMethod2(T t) {
return new ArrayList<String>();
}
public List<?> wildMethod3() {
return new ArrayList<>();
}
}
Generic 사용시 주의할 점
- Generic Type으로는 전역변수(Static)을 선언할 수 없다.
- Generic Type으로는 인스턴스를 생성할 수 없다.
- 타입의 매개변수는 T 말고도 존재한다.
- E : Element
- K : Key
- N : Number
- T : Type
- V : Value
- Generic 타입이 인스턴스화 될 때, 컴파일러는 타입 파라미터와 관련된 정보를 제거한다 => 제네릭을 사용하기 이전의 라이브러리 등과 호완성을 유지하기 위함이다.
Reference : https://namjackson.tistory.com/18
반응형
'개발 지식 > Java' 카테고리의 다른 글
빌더 패턴(Builder Pattern) 이란 (0) | 2020.02.24 |
---|---|
[JAVA] Logback 사용법 (0) | 2020.02.19 |
[JAVA] JDBC란 (1) | 2020.02.05 |
[JAVA] Servlet(서블릿) 이란 (0) | 2020.01.27 |
Mybatis Mapper 인터페이스 (0) | 2020.01.20 |