본문 바로가기
Language/Java

[Generic] <T extends class>

by ilyadelavie 2022. 7. 14.

제네릭 클래스의 자료형 제한


  • 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