일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- query
- aggregation
- Test
- License
- 900gle
- matplotlib
- analyzer test
- springboot
- plugin
- Mac
- ELASTIC
- Python
- zip 파일 암호화
- TensorFlow
- flask
- aggs
- licence delete curl
- 차트
- zip 암호화
- 파이썬
- Kafka
- docker
- high level client
- Elasticsearch
- token filter test
- sort
- API
- license delete
- MySQL
- Java
Archives
- Today
- Total
개발잡부
[java] 제네릭(generic) 본문
반응형
자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미
이렇듯 제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 한마디로 특정(Specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이라는 것이다.
장점
1. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지
2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다.
3. 비슷한 기능을 지원하는 경우 코드의 재사용성
타입 | 설명 |
<T> | Type |
<E> | Element |
<K> | Key |
<V> | Value |
<N> | Number |
제네릭의 선언 및 생성
자바에서 제네릭은 클래스와 메소드에만 다음과 같은 방법으로 선언할 수 있습니다.
class MyArray<T> {
T element;
void setElement(T element) { this.element = element; }
T getElement() { return element; }
}
// 제네릭 클래스
class ClassName<K, V> {
private K first; // K 타입(제네릭)
private V second; // V 타입(제네릭)
void set(K first, V second) {
this.first = first;
this.second = second;
}
K getFirst() {
return first;
}
V getSecond() {
return second;
}
}
// 메인 클래스
class Main {
public static void main(String[] args) {
ClassName<String, Integer> a = new ClassName<String, Integer>();
a.set("10", 10);
System.out.println(" fisrt data : " + a.getFirst());
// 반환된 변수의 타입 출력
System.out.println(" K Type : " + a.getFirst().getClass().getName());
System.out.println(" second data : " + a.getSecond());
// 반환된 변수의 타입 출력
System.out.println(" V Type : " + a.getSecond().getClass().getName());
}
}
반응형
'JAVA > java' 카테고리의 다른 글
[java] Character Class (0) | 2023.04.09 |
---|---|
[java] File Class (0) | 2023.03.18 |
[java] LocalDateTime (0) | 2023.01.29 |
[java]Array.Sort, Collections.sort (0) | 2022.09.18 |
[java] Web server failed to start. Port 8080 was already in use. (0) | 2022.08.06 |
Comments