Programing/Java

Java Generic (제너릭)

BUST 2018. 8. 14. 22:12

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