Shong Studio의 정보 창고

[JAVA] Class<?> - Unbounded Wildcard 본문

카테고리 없음

[JAVA] Class<?> - Unbounded Wildcard

Shong Studio 2024. 3. 10. 19:22
728x90
반응형

Class<?>에서 물음표(?)는 와일드카드(wildcard)를 나타냅니다.

 

자바 제네릭에서 와일드카드는 '알 수 없는 타입'을 의미합니다. Class<?>는 '모르는 클래스 타입의 Class 객체'를 의미하며, 어떠한 클래스 타입도 될 수 있음을 나타냅니다.

이는 제네릭을 사용할 때 타입 안전성을 제공하면서도 유연성을 유지할 수 있게 해줍니다.

 

와일드카드는 크게 세 가지 방식으로 사용될 수 있습니다:

  1. Unbounded Wildcard (제한 없는 와일드카드): Class<?>처럼 표현되며, '어떤 타입의 Class 객체도 될 수 있다'는 의미입니다. 이는 메소드 매개변수나 리턴 타입으로 사용될 때, 메소드가 다양한 타입의 객체들과 작업할 수 있음을 나타냅니다.
  2. Upper Bounded Wildcard (상한 제한 와일드카드): Class<? extends SomeClass>처럼 표현되며, 'SomeClass 또는 그 서브 클래스 타입의 Class 객체'를 의미합니다. 이는 주로 입력 매개변수로 사용되며, 특정 클래스의 하위 클래스들만을 처리하도록 제한합니다.
  3. Lower Bounded Wildcard (하한 제한 와일드카드): Class<? super SomeClass>처럼 표현되며, 'SomeClass 또는 그 슈퍼 클래스 타입의 Class 객체'를 의미합니다. 이는 주로 출력을 위해 사용되며, 특정 클래스의 슈퍼 클래스들을 처리할 때 사용됩니다.

 

Class<?>의 사용은 매우 흔한데, 예를 들어, 어떤 특정 타입이 아니라 여러 다양한 타입의 클래스 객체들을 다루어야 할 때 유용합니다. 예를 들어, 리플렉션을 사용하여 클래스의 메타데이터를 조회하거나, 어노테이션을 처리하는 라이브러리에서 Class<?> 타입을 많이 사용합니다. - ex> Class<? extends Annotation>

 
 
 
728x90
반응형