WildcardTree
WildcardTree (와일드카드 타입 인자 트리 노드)
제네릭에서 와일드카드 타입 인자 하나를 나타내는 트리 노드입니다. List<? extends Number> 같은 코드에서 물음표로 표현되는 부분이 바로 이 노드가 담당하는 영역이에요.
본문
컴파일러가 소스 코드를 파싱하면서 만드는 추상 구문 트리(AST)에서, 와일드카드 타입 인자는 WildcardTree라는 독립된 노드로 표현됩니다. com.sun.source.tree 패키지의 다른 트리 노드처럼 이 인터페이스는 실제 구현을 직접 제공하지 않고, 컴파일러 내부에서 이 트리를 탐색하거나 변환할 때 필요한 규약만 정의해요.
와일드카드의 경계(bound) 종류는 getKind()를 호출해서 알아냅니다. 와일드카드는 경계에 따라 여러 모습을 가질 수 있는데, 형태를 보면 이렇게 구분돼요.
? // 경계가 없는 와일드카드
? extends bound // 상한 경계가 있는 와일드카드
? super bound // 하한 경계가 있는 와일드카드
경계 유무와 방향에 따라 Tree.Kind 값이 달라지므로, 이 값을 보고 어떤 종류의 와일드카드인지 판별하면 됩니다.
메서드
getBound()— 와일드카드의 경계를 나타내는Tree를 반환해요. 경계가 없는 와일드카드라면null을 반환합니다.
이 인터페이스는 Tree를 상속하므로 accept, getKind 같은 Tree에 선언된 메서드도 함께 사용할 수 있어요.