참조: http://www.ibm.com/developerworks/kr/library/j-jtp04298.html

흠.. 제네렉 타입을 사용한 객체를 생성할 때 유용할 것 같습니다.

Box<String> box = new BoxImpl<String>();

보통 제네릭 타입을 사용한 객체를 생성할 때 저렇게 String이라는 타입을 두 번이나 입력해야 하는데..

public class BoxImpl<T> implements Box<T> {

    public static<V> Box<V> make() {
        return new BoxImpl<V>();
    }

    ...
}

이렇게 make라는 팩토리 메소드를 만들어 두면..

Box<String> myBox = BoxImpl.make();

이렇게 타입을 한 번만 지정해도 되는군요. 오호~ 괜찮군요. 근데 굳이 V 라고 안하고 그냥 T 계속 써도 될텐데, 굳이 구분할 필요가 있었나..흠. 어차피 같은 타입 지칭하는건데..

V대신 T를 써도 무방하긴 하지만, 이 예제는 왠지 컴파일러가 제네릭 타입을 선택하는 과정을 보여주기 위해, V를 둔것 같습니다.