bong-u/til

Generics

수정일 : 2024-11-15

  • 효과 : 타입안정성, 간결한 코드

Generic class

1public class Box<M, I> {
2    private M material;
3    private I item;
4    ...
5}
6
7Box<Paper, String> box = new Box<Paper, String>();

Generic Function

1public class CoffeeMachine {
2    public <T> Coffee makeCoffee(T capsule) {
3        return new Coffee(capsule);
4    }
5}
6CoffeeMachine coffeeMachine = new CoffeeMachine();
7Colombian capsule = new Colombian();
8coffeeMachine.<Colombian>makeCoffee(capsule);
9coffeeMachine.makeCoffee(capsule);

Restrictions on Generics

1// BoxMaterial을 상속 받았으면서 Hard(인터페이스)를 구현한 클래스만 가능
2public class Box<M extends BoxMaterial & Hard>
3// BoxMaterial의 조상 클래스만 가능
4public class Box<T super BoxMaterial>

Whild Card

1// T와 그 자손만 가능
2<? extends T>
3// T와 그 조상만 가능
4<? super T>
5// 모두 가능
6<?>