Java Generic (제너릭)
- 형인자 자료형 (parameterized type) - List<String>
- 실 형인자 (actual type parameter) - String
- 제너릭 자료형 (generic type) - List<E>
- 형식 형인자(formal type parameter) - E
- 비한정적 와일드카드 자료형(unbounded wildcard type) - List<?>
- 무인자 자료형(raw type) - List
- 한정적 형인자 (bounded type parameter) - <E extends Number>
- 재귀적 형 한정 (recursive type bound) <T extends Comparetor<T>>
- 한정적 와이들카드 자료형 (bounded wildcard type) - List<? extends Number>
- 제너릭 메서드 (generic method) - static <E> List<E> asList(E[] a)
- 자료형 토근 (type token) - String.class
Class generic example
public class GenericsType<T> {
private T t;
public T get(){
return this.t;
}
public void set(T t1){
this.t=t1;
}
}
Method generic example
public static double sum(List<? extends Number> list){
double sum = 0;
for(Number n : list){
sum += n.doubleValue();
}
return sum;
}
}
Interface generic example
public interface Comparable<T> {
public int compareTo(T o);
}
Wildcard
- Optional 같이 wrap이 되어있는 값들을 리턴할때 실제로 들어가 있는 값이 subclass이라고 해도 type cast이 되지 않는다. 이럴때에는 wildcard를 사용하여 문제점을 해결할수 있다.
class A {}
class B extends A {}
interface Sup { Optional<? extends A> a(); }
interface Sub extends Sup { Optional<? extends B> a(); }
'Programing > Java' 카테고리의 다른 글
SLF4J(Simple Logging Facade for Java) (0) | 2018.09.01 |
---|---|
Executor service (0) | 2018.08.31 |
GC overhead limit exceeded (0) | 2018.08.10 |
전략 패턴 (Strategy Pattern) (0) | 2018.08.04 |
Rule Engine (0) | 2018.08.04 |