제네릭 클래스의 자료형 제한
- T에 무작위로 클래스가 들어갈 수 없게 Material 클래스를 상속받은 클래스로 한정한다.
Material.java
public abstract class Material{
public abstract void doPrinting();
}
Powder.java
public class Poweder extends Material{
public void doPrinting(){
System.out.println("Powder Material print");
}
public String toString(){
return "Material is a Powder";
}
}
Plastic.java
public class Plastic extends Material{
public void doPrinting() {
System.out.println("Plastic Material print");
}
public String toString() {
return "Material is a plastic";
}
}
GenericPrinter.java
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();
}
}
GenericPrinterTest.java
public class GenericPrinterTest{
public static void main(String[]args){
GenericPrint<Powder> powderPrinter = new GenericPrint<>();
powderPrintert.setMaterial(new Powder());
Powder powder = PowderPrinter.getMaterial(); //형변환 하지 않음. 당근 return 타입이 powder객체자나
System.out.println("1 : "+ powder);
System.out.println("2 : "+ powderPrinter);
}
}
//1: Material is a powder
//2: Material is a powder
'Language > Java' 카테고리의 다른 글
[Collection] Collection Framework 주요 메서드 모음(작성중) (0) | 2022.07.14 |
---|---|
String 비교 (0) | 2022.07.11 |
Method overriding_객체 생성 (0) | 2022.07.11 |