제네릭(Generic)

서이·2022년 9월 12일
0

Java

목록 보기
9/27

 제네릭이란, 하나의 값으로 여러가지 다른 데이터 타입들을 가질수 있도록 하는 방법이다.

List list = new ArrayList();

list.add("hello");

String str = (String)list.get(0); // 타입 변환함



List<String> list = new ArrayList<String>();

list.add("hello");

String str = list.get(0); // 타입 변환 하지 않음

제네릭 타입(class , interface )

 제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말함
클래스, 인터페이스 이름 뒤에 <> 부호가 붙고, 사이에 타입 파라미터가 위치함

public class 클래스명<T> {...}

public interface 인터페이스명<T> {...} 
 

  
  
// 비제네릭
public class ObjectType {

	private Object object;

	public Object getObject() {
		return object;
	}

	public void setObject(Object object) {
		this.object = object;
	}
}

// 제네릭
public class GenericType<T> {

	private T genericType;

	public T getGenericType() {
		return genericType;
	}

	public void setGenericType(T genericType) {
		this.genericType = genericType;
	}
}

  
  
 
  
public class GenericExample {

	public static void main(String[] args) {
		
		//비제네릭
		
		ObjectType ot = new ObjectType();
		
		ot.setObject("비제네릭타입");              
  		// String -> Object (자동 타입 변환)
		
		String str0 = (String)ot.getObject();   
  		// Object -> String (강제 타입 변환)
  
		
		//제네릭
		
		GenericType<String> gt = new GenericType<String>();
		
		gt.setGenericType("제네릭타입");
		
		String str1 = gt.getGenericType();
	}
}

 Object 타입을 사용하면 모든 객체를 저장할 수 있는 장점이 있지만, 저장할 때 타입 변환이 발생하고, 읽어 올 때에도 타입 변환이 발생한다.  이런 타입 변환이 빈번하게 발생하면 프로그램 전체 성능에 좋지 못한 결과를 초래할 수 있다.
 하지만 제네릭(Generic)은 클래스를 설계할 때 구체적인 타입을 명시하지 않고, 타입 파라미터로 대체했다가 실제 클래스가 사용될 때 구체적 타입을 지정함으로서 타입 변환을 최소화시키는 것을 확인할 수 있다.

profile
작성자 개인이 잊을 때마다 보라고 정리한 글

0개의 댓글

관련 채용 정보