제네릭(Generic)
- 클래스 내부의 데이터 타입을 외부에서 지정하는 기법
- 인스턴스화 할 때 다룰 데이터 타입을 확정
왜?
- 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거
- 타입을 엄격하게 제한, 타입의 안전성
- 형변환 작업이 불필요하여 코드가 간결
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package generic;
import java.util.ArrayList;
import java.util.List;
public class Call {
public static void main(String[] args) {
/**********************************************
* <참조타입>
* 선언된 참조타입으로 해당 참조타입 대입가능
**********************************************/
List<String> s = new ArrayList<String>();
/**********************************************
* <?> //와일드 카드
* 아무 참조타입 대입 가능
**********************************************/
List<?> s2 = null;
s2 = new ArrayList<Integer>();
s2 = new ArrayList<String>();
}
|
제네릭 타입
- 타입을 파라미터로 가지는 클래스와 인터페이스.
- 클래스 또는 인터페이스 이름 뒤에 <>가 붙고 사이에 파라미터가 위치한다.
GenericInterface.java
1
2
3
4
5
6
7
|
package generic;
public interface GenericInterface <T> {
public T get(int i);
public void add(T object);
}
|
GenericSample.java
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
|
package generic;
import java.util.ArrayList;
import java.util.List;
public class GenericSample <T> implements GenericInterface <T> {
private List<T> list;
@Override
public T get(int i) {
if(list != null) {
return list.get(i);
}else {
return null;
}
}
@Override
public void add(T object) {
if(list == null) this.list = new ArrayList<T>();
this.list.add(object);
}
}
|
'교육 > Java' 카테고리의 다른 글
#118 Java 메모리 사용 영역 (0) | 2019.11.04 |
---|---|
#117 Java 나만의 예외처리 (0) | 2019.11.01 |
#115 Java 복습 (기본형, 참조형, null, Collection) (0) | 2019.10.30 |
#113 Java MVC 패턴, model1과 model2 (0) | 2019.10.28 |
#107 Java 싱글톤 패턴 (0) | 2019.10.18 |