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
- 해시함수
- node.js
- JavaScript
- 동적쿼리
- JSTL
- jQuery
- 전자서명
- AndroidStudio
- NPM
- 암호학
- 공개키암호시스템
- Java
- C#크롤링
- jsx
- c:forEach
- 대칭키암호화
- 무결성
- Spring
- react
- RequestMethod.POST
- c:choose
- 대칭키알고리즘
- MySQL
- 서드파티모듈
- 국제화
- 대칭키암호시스템
- mybatis
- fullcalendar
- SQL
- vscode
Archives
- Today
- Total
Today Yewon Learned
[JAVA] Generic(제네릭) 본문
제네릭(Generic)
- 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법
- 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것
- 잘못된 타입이 들어올 수 있는 상황을 컴파일 단계에서 방지 가능
- 코드 재사용성 높아짐
제네릭(Generic)의 타입 파라미터
- 가장 흔히 쓰는 이름은 T(Type)과 E(Element)
- 만약 HashMap<K,V>의 경우에는 K(Key)와 V(Value)
- T1, T2, T3처럼 숫자를 붙일 수도 있음
| 타입 파라미터 | 의미 |
| <T> | Type |
| <E> | Element |
| <K> | Key |
| <V> | Value |
| <N> | Number |
제네릭(Generic)의 사용
아래 꺽쇠 기호(<>)사이에 있는 T를 '타입 파라미터' 라고 부르며, Box와 같이 타입 파라미터를 받는 클래스를 '제네릭 클래스(Generic Class)라고 함
public class Box<T> {
private T something;
public void set(T object) {
this.something = object;
}
public T get() {
return something;
}
}
아래처럼 타입 파라미터로 String을 넘겨주면,
Box<String> box = new Box<>();
클래스에 있던 모든 T가 String으로 대체됨
public class Box<String> {
private String object;
public void set(String object) {
this.object = object;
}
public String get() {
return object;
}
}
제네릭 extends
- 상속의 개념이 합쳐지면 더 다양한 방식으로 제네릭(Generic)을 사용할 수 있음
아래 PhoneBox 클래스는 Phone 타입을 받는 Box 클래스를 상속 받음
public class PhoneBox extends Box<Phone> {
public void handsFreeCall(String numberString) {
object.call(numberString);
}
}
extends 키워드를 이용하여 타입 제한 가능
public class PhoneBox<T extends Phone> extends Box<T> {
public void handsFreeCall(String numberString) {
object.call(numberString);
}
}
여기서<T extends Phone>은 T가 Phone의 자식 클래스이어야 한다는 뜻
예를 들어서 AndroidPhone이라는 클래스는 Phone을 상속 받기 때문에 PhoneBox<AndroidPhone>은 가능합니다. 하지만 PhoneBox<String>을 쓰면 오류가 발생
[참조] : Codeit
'JAVA' 카테고리의 다른 글
| [JAVA] Spring 다국어 변환 - 언어에 따라 DB컬럼 다르게 표출하기(1) (0) | 2022.04.19 |
|---|---|
| [JAVA] request.getParameter() 메소드 (0) | 2021.11.30 |
| [JAVA] Casting(캐스팅 : 형변환) (0) | 2021.11.12 |
| [JAVA] 상속 (0) | 2021.11.11 |
| [JAVA] Setter 메소드와 Getter 메소드 (0) | 2021.11.10 |
Comments