티스토리 뷰
Goal
- 제네릭 프로그래밍의 정의와 특징 및 사용법에 대해 알아본다.
1. 제네릭 프로그래밍이란
- 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형으로 변환 될 수 있도록 프로그래밍 하는 방식.
- 실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적인 프로그래밍 방식
2. 자료형 매개 변수 T
- 여러 참조 자료형으로 대체 될 수 있는 부분을 하나의 문자로 표현.
- type이라는 의미로 T를 사용
3. 자료형 매개 변수의 제한
- 원하는 자료형 매개 변수만 제네릭 클래스에서 사용할 수 있게 하기 위해 extends를 이용한다.
- 상속의 원리에 따라 extends한 클래스는 상속클래스에 정의 된 메서드를 공유할 수 있음.
예제 1) Material class
public abstract class Material {
public abstract void doPrinting();
}
예제 2) Material을 상속을 받는 GenericPrinter class
//T로 들어올 type은 Material을 상속받은 값이어야 한다
public class GenericPrinter<T extends Material> {
private T material;
public T getMaterial() {
return material;
}
public void setMaterial(T material) {
this.material = material;
}
public String toString() {
return material.toString();
}
public void printing() {
material.doPrinting();
}
}
예제 3) Material을 상속받은 Powder class
- Material을 상속받았기 때문에, doPrinting 메서드를 Override하여 사용할 수 있다.
package generic;
public class Powder extends Material {
public String toString() {
return "This is Powder";
}
@Override
public void doPrinting() {
System.out.println("Powder printing");
}
}
예제 4) Material을 상속받은 Plastic class
package generic;
public class Plastic extends Material {
public String toString() {
return "This is Plastic";
}
@Override
public void doPrinting() {
System.out.println("Plastic printing");
}
}
예제 5) Water classs
- Material class를 상속받지 않기 때문에, GenericPrinter에서 Water type으로 사용될 수 없다.
package generic;
public class Water {
}
4. 자료형 매개 변수가 두 개 이상일 때
public class Point<T, V> {
T x;
V y;
Point (T x, V y) {
this.x = x;
this.y = y;
}
public T getX() { //제네릭 메서드
return x;
}
public V getY() {
return y;
}
}
- 일반 클래스에서도 제네릭 메서드를 사용할 수 있으며, 제네릭 메서드의 매개 변수는 지역변수의 역할을 한다.
'Java > Java 올인원 패키지' 카테고리의 다른 글
24. List 인터페이스 (Java) (0) | 2020.03.19 |
---|---|
23. 컬렉션 프레임워크 (Java) (0) | 2020.03.19 |
21. String, Wrapper 클래스 (0) | 2020.03.19 |
20. Object 클래스 (Java) (0) | 2020.03.18 |
19. 인터페이스 (Java) (0) | 2020.03.18 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- 20201204
- 20200415
- 20200423
- 20200502
- 20200406
- 20200403
- 생활코딩리눅스
- 20200417
- 20200428
- 20200421
- 20200622
- 20200424
- 20200504
- 20200427
- 20200425
- chapter8
- 20200319
- chapter7
- 20200512
- 20200317
- 20200503
- 20200413
- 20200330
- 20200624
- 20200804
- 20200429
- likelion
- 백준
- 20200420
- 20200510
- Total
- Today
- Yesterday