반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- pytorch
- 디자인 패턴
- 웹프로그래밍
- Linux
- 파이토치
- python
- html
- 웹서버
- 프론트엔드
- django-debug-toolbar
- 개발환경
- css
- MySQL
- 데이터베이스
- csrf_token
- 오류
- 디자인패턴
- 리눅스
- 인공지능
- 백엔드
- java
- DB
- 프로그래밍
- javascript
- vscode
- Django
- AI
- pyvenv.cfg
- Design Pattern
- 파이썬
Archives
- Today
- Total
Shong Studio의 정보 창고
[JAVA] Class<?> - Unbounded Wildcard 본문
728x90
반응형
Class<?>에서 물음표(?)는 와일드카드(wildcard)를 나타냅니다.
자바 제네릭에서 와일드카드는 '알 수 없는 타입'을 의미합니다. Class<?>는 '모르는 클래스 타입의 Class 객체'를 의미하며, 어떠한 클래스 타입도 될 수 있음을 나타냅니다.
이는 제네릭을 사용할 때 타입 안전성을 제공하면서도 유연성을 유지할 수 있게 해줍니다.
와일드카드는 크게 세 가지 방식으로 사용될 수 있습니다:
- Unbounded Wildcard (제한 없는 와일드카드): Class<?>처럼 표현되며, '어떤 타입의 Class 객체도 될 수 있다'는 의미입니다. 이는 메소드 매개변수나 리턴 타입으로 사용될 때, 메소드가 다양한 타입의 객체들과 작업할 수 있음을 나타냅니다.
- Upper Bounded Wildcard (상한 제한 와일드카드): Class<? extends SomeClass>처럼 표현되며, 'SomeClass 또는 그 서브 클래스 타입의 Class 객체'를 의미합니다. 이는 주로 입력 매개변수로 사용되며, 특정 클래스의 하위 클래스들만을 처리하도록 제한합니다.
- Lower Bounded Wildcard (하한 제한 와일드카드): Class<? super SomeClass>처럼 표현되며, 'SomeClass 또는 그 슈퍼 클래스 타입의 Class 객체'를 의미합니다. 이는 주로 출력을 위해 사용되며, 특정 클래스의 슈퍼 클래스들을 처리할 때 사용됩니다.
Class<?>의 사용은 매우 흔한데, 예를 들어, 어떤 특정 타입이 아니라 여러 다양한 타입의 클래스 객체들을 다루어야 할 때 유용합니다. 예를 들어, 리플렉션을 사용하여 클래스의 메타데이터를 조회하거나, 어노테이션을 처리하는 라이브러리에서 Class<?> 타입을 많이 사용합니다. - ex> Class<? extends Annotation>
728x90
반응형