Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

chapter22_Generic 본문

JAVA/chapter01_JAVA_개념정리

chapter22_Generic

GAWON 2023. 5. 31. 18:18
1.1 제네릭(Generic)
 - Java5부터 새로 추가된 타입으로 제네릭을 이용함으로써
      잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다.
 - 컬렉션 등에서 널리 사용되므로 확실히 이해해 두어야 한다.
 - 클래스나 메소드에서 컴파일 할 때 타입체크(Type check)를 하는 기능이다.


1.2 제네릭의 이점
 - 컴파일 시 강한 타입 체크를 할 수 있다.
 	클래스나 메소드에서 컴파일 할 때 타입체크(Type check)를 하여
 ★실행 에러가 나기 전 컴파일 단계에서 에러를 사전에 방지한다.
 - 미리 객체(인스턴스)의 공통적인 타입을 명시해서 처리하기 때문에 안정성이 높고, 
 ★타입 변환(casting)을 제거한다.
 	ex)
 	<비제네릭 코드>
 	List list = new ArrayList();(동적코드인 인스턴스 객체)//업 캐스팅
 	list.add("hello"); //add-값을 넣는다
 	String str = (String)list.get(0);	// 타입 변환을 해야 한다.
 	↓
 	<제네릭 코드>  
 	List<String> list = new ArrayList<String>();//문자열타입 <String> 
 	list.add("hello");//값을 넣는다
 	String str = list.get(0);	// 타입 변환을 하지 않는다.


 - 제네릭 클래스와 제네릭 메소드의 구현이 가능하다.
 - 2개 이상의 제네릭 타입 선언이 가능하다.
 - 주의사항
	1) T obj = new T();			 불가능! (T의 크기를 알 수 없기 때문에) T는 제네릭
	2) T[] arr = new T[3];		 불가능! (T의 크기를 알 수 없기 때문에)
	3) T[] arr;					 가능!

	class Box <T> {

		private T obj;

		public void setObj(T obj) {
			this.obj = obj;
		}
		public T getObj() {
			return obj;
		}
	}

// main

Box<String> box = new Box<>();							// 구체화 : T가 무엇인지 알려주는 것
Box<String> box = new Box<String>();  (위와 동일한내용)		// 구체화는 referenceType
참조타입 만 가능 하다. (PrimitiveType은 불가!!)

// 컴파일 시점
T <- String

class Box {												// 컴파일 시점에 구체화 된 클래스

	private String obj;

	public void setObj(String obj) {
		this.obj = obj;
	}
	public String getObj() {
		return obj;
	}
}                                    //데이터 타입 명시한다(	private/public)

'JAVA > chapter01_JAVA_개념정리' 카테고리의 다른 글

chapter24_io  (0) 2023.06.01
chapter23_Collection Framework  (0) 2023.06.01
chapter21_thread  (0) 2023.05.31
chapter20_api  (0) 2023.05.31
chapter19_exception  (0) 2023.05.31