2018-4-15 TIL Exception

와일드카드

언제 와일드 카드에 제한을 걸어야하나?

  • 매개변수 선언 : Box<? extends Toy> box => box가 참조하는 인스턴스를 대상으로 꺼내는 작업만 허용
  • Box<? super extends Toy> box => box가 참조하는 인스턴스를 대상으로 넣는 작업으로만 허용
package yoon;

class BoxContentsMover {
    // from에 저장된 내용을 to로 이동
    public static void moveBox(Box2<? super Toy> to, Box2<? extends Toy> from) {
        to.set(from.get());
    }
}

public class MoveBoxContents {
    public static void main(String [] args) {
        Box2<Toy> box1 = new Box2<>();
        box1.set(new Toy());
        Box2<Toy> box2 = new Box2<>();

        // box1에 저장된 내용을 box2로 이동
        BoxContentsMover.moveBox(box2, box1);
        System.out.println(box2.get());
    }
}
//result
I am a boy
Written on April 15, 2018