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 | 31 |
Tags
- node.js
- C#크롤링
- mybatis
- Callback
- Spring
- MySQL
- SQL
- JavaScript
- 국제화
- jQuery
- egov
- jsx
- RequestMethod.POST
- HTTP
- iBATIS
- android
- 서드파티모듈
- Java
- c:forEach
- vscode
- fullcalendar
- NPM
- 동적쿼리
- 콜백
- 쿼리
- c:choose
- JSTL
- AndroidStudio
- MVC
- react
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