Java/정리

제네릭

낭구리 2021. 9. 7. 18:13

제네릭 자료형 정의

● 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언하는 것

● 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식\

● 컬렉션 프레임워크에서 많이 사용되고 있음

제네릭 클래스 정의

public class GenericPrinter<T> {
	private T material;
	
	public void setMaterial(T material) {
		this.material = material;
	}
	
	public T getMaterial() {
		return material;
	}
	
	public String toString(){
		return material.toString();
	}
}

; } }

● 자료형 매개변수 T(type parameter) : 이 클래스를 사용하는 시점에 실제 사용할 자료형을 지정, static 변수는 사용할 수 없음

● GenericPrinter : 제네릭 자료형

● E : element, K: key, V : value 등 여러 알파벳을 의미에 따라 사용 가능

<T extends 클래스> 사용하기

상위 클래스의 필요성

● T 자료형의 범위를 제한 할 수 있음

● 상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있음

T extends 를 사용한 프로그래밍

● GenericPrinter 에 material 변수의 자료형을 상속받아 구현

● T에 무작위 클래스가 들어갈 수 없게 Material 클래스를 상속받은 클래스로 한정

Material.java

public abstract class Material {
	
	public abstract void doPrinting();
}

Powder.java

public class Powder extends Material{
		
	public void doPrinting() {
		System.out.println("Powder 재료로 출력합니다");
	}
	
	public String toString() {
		return "재료는 Powder 입니다";
	}
}

Plastic.java

public class Plastic extends Material{

	public void doPrinting() {
		System.out.println("Plastic 재료로 출력합니다");
	}
	
	public String toString() {
		return "재료는 Plastic 입니다";
	}
}

GenericPrinter.java

public class GenericPrinter<T extends Material> {
	private T material;
	
	public void setMaterial(T material) {
		this.material = material;
	}
	
	public T getMaterial() {
		return material;
	}
	
	public String toString(){
		return material.toString();
	}
	
	public void printing() {
		material.doPrinting();
	}
}

'Java > 정리' 카테고리의 다른 글

래퍼클래스  (0) 2021.09.07
Thread  (0) 2021.09.07
예외처리  (0) 2021.09.01
내부클래스  (0) 2021.09.01
Object클래스  (0) 2021.09.01