제네릭(Generic)
: 클래스에서 사용하는 변수의 자료형이 여러 개 일 수 있고, 그 메서드가 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언
: 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식이다.
(자료형 매개변수 T 이용) : 제네릭 자료형
<> 다이아몬드 연산자.
plastic.java
package Basic_Grammar.chap4.ch06Generic.Test01;
public class Plastic {
public String toString(){
return "재료가 Plastic 입니다.";
}
}
powder.java
package Basic_Grammar.chap4.ch06Generic.Test01;
public class Powder {
public String toString(){
return "재료가 Powder 입니다.";
}
}
ex1) 3D 프린터 : 제네릭 없이
package Basic_Grammar.chap4.ch06Generic.Test01;
public class ThreeDPrinterTest {
// Object 타입을 이용하여 쓸 수 있다.
public static void main(String[] args) {
Powder powder=new Powder();
ThreeDPrinter_Object printer=new ThreeDPrinter_Object();
printer.setMaterial(powder);
// But, (클래스타입)으로 형변환을 무조건 해줘야하는 불편함이 있다.
Powder p=(Powder) printer.getMaterial();
}
}
ex2) 제네릭 이용 (자료형 매개변수 T 이용)
package Basic_Grammar.chap4.ch06Generic.Test01;
public class GenericPrinter<T> {
private T material;
public T getMaterial() {
return material;
}
public void setMaterial(T material) {
this.material = material;
}
@Override
public String toString() {
return "GenericPrinter{" +
"material=" + material +
'}';
}
}
package Basic_Grammar.chap4.ch06Generic.Test01;
public class GenericPrinterTest {
public static void main(String[] args) {
GenericPrinter<Powder> powderGenericPrinter=new GenericPrinter<>();
Powder powder=new Powder();
powderGenericPrinter.setMaterial(powder);
// Object 이용했을 때는 형변환을 해줘야했는데, Generic을 이용하여 PowderGenericPrinter를 구현하였기 때문에 따로 형변환 안한다.
Powder p=powderGenericPrinter.getMaterial();
System.out.println(p.toString());
}
}
'JAVA > Java2021-2' 카테고리의 다른 글
제네릭 메서드 (0) | 2021.10.09 |
---|---|
제네릭(Generic) - <T extends 클래스> 이용 (0) | 2021.10.09 |
자바와 자료구조 (선형자료구조, 비선형자료구조, 매핑형자료구) (0) | 2021.10.08 |
Class 클래스(클래스 이름이 Class) (0) | 2021.10.08 |
String 클래스(String, StringBuilder, StringBuffer 클래스), text block(java13부터제공) (0) | 2021.10.07 |