정리/Java

Generics

개발아기 2023. 3. 8. 15:45

Generics

정의 및 특징

  • 다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입 체크
  • 미리 사용할 타입을 명시해서 형 변환을 하지 않아도 되도록 함
    • 객체의 타입에 대한 안정성 향상 및 형 변환의 번거로움 감소

표현

  • 클래스 또는 인터페이스 선언 시 <>에 Type Parameter 표시
    • public class Class_Name<T> {}
    • public interface Interface_Name<T> {}

객체 생성

  • 변수 쪽과 생성 쪽의 타입은 반드시 같아야 함
    • ClassName<Number> generic = new ClassName<Number>();
    • ClassName<Number> generic = new ClassName<>();
    • ClassName generic = new ClassName(); = ClassName<Object> generic = new ClassName<Object>();

클래스 생성

  • Raw Class
class NormalBox {
	private Object some;

	public Object getSome() {
		return some;
	}

	public void setSome(Object some) {
		this.some = some;
	}
}
  • Generic Class
class GenericBox<T> {
	private T some;
	
	public T getSome() {
		return some;
	}

	public void setSome(T some) {
		this.some = some;
	}
}