WildcardTree

WildcardTree (와일드카드 타입 인자 트리 노드)

제네릭에서 와일드카드 타입 인자 하나를 나타내는 트리 노드입니다. List<? extends Number> 같은 코드에서 물음표로 표현되는 부분이 바로 이 노드가 담당하는 영역이에요.

출처: Java API Reference

본문

컴파일러가 소스 코드를 파싱하면서 만드는 추상 구문 트리(AST)에서, 와일드카드 타입 인자는 WildcardTree라는 독립된 노드로 표현됩니다. com.sun.source.tree 패키지의 다른 트리 노드처럼 이 인터페이스는 실제 구현을 직접 제공하지 않고, 컴파일러 내부에서 이 트리를 탐색하거나 변환할 때 필요한 규약만 정의해요.

와일드카드의 경계(bound) 종류는 getKind()를 호출해서 알아냅니다. 와일드카드는 경계에 따라 여러 모습을 가질 수 있는데, 형태를 보면 이렇게 구분돼요.

?              // 경계가 없는 와일드카드
? extends bound  // 상한 경계가 있는 와일드카드
? super bound    // 하한 경계가 있는 와일드카드

경계 유무와 방향에 따라 Tree.Kind 값이 달라지므로, 이 값을 보고 어떤 종류의 와일드카드인지 판별하면 됩니다.

메서드

  • getBound() — 와일드카드의 경계를 나타내는 Tree를 반환해요. 경계가 없는 와일드카드라면 null을 반환합니다.

이 인터페이스는 Tree를 상속하므로 accept, getKind 같은 Tree에 선언된 메서드도 함께 사용할 수 있어요.

더 알아보기

Java 공식 API