Notice
Recent Comments
Recent Posts
«   2024/11   »
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
Today
Total
관리 메뉴

기록 > 기억

[JAVA] 제네릭 타입 본문

IT국비지원

[JAVA] 제네릭 타입

BY SON 2021. 11. 11. 05:20

제네릭 타입

 

● 타입을 파라미터로 가지는 클래스와 인터페이스

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

/* 타입 파라미터에는 구체적인 타입을 지정해야 함 */

 

● 비제네릭 VS 제네릭

//제네릭 타입 사용안함
List list = new ArrayList();

//Object 타입으로 자동 타입 변환
list.add("HELLO");	//String → Object
list.add(123);		//int → Object

//값을 가져올 때 강제 타입 변환 해줘야 함!
String str = (String)list.get(0);	//Object → String
int num = (int)list.get(1);		//Object → int

/* 장점 → 모든 종류의 객체를 저장할 수 있음 */
/* 단점 → 저장할 때 Object로 타입변환하고 값을 가져올 때 또 타입변환 해줘야 함 */
//제네릭 타입 사용
List<String> list = new ArrayList<String>();

//String 타입만 저장가능
list.add("HELLO");
list.add("123");
		
//저장된게 String 타입이므로 값을 가져올 때 타입 변환 할 필요없음!
String str = list.get(0);
String num = list.get(1);

/* 제네릭을 사용하면 불필요한 타입 변환을 안해도 됨 */

 

● 멀티 타입 파라미터

public class 클래스명<A, B, ...> { ...}
public interface 인터페이스명<A, B, ...> { ... }

 

● 와일드카드 타입 → 제네릭 타입을 매개변수나 리턴타입으로 사용할때 제한하기 위함 

<?>			//제한없음
<? extends 상위타입>	//상위 클래스 제한
<? super 상위타입>	//하위 클래스 제한
//A ← B ← C ← D ← E 
class A {}
class B extends A {}
class C extends B {}
class D extends C {}
class E extends D {}

<?>		//A, B, C, D, E 가능
<? extends C>	//C, D, E 가능 → C 클래스와 자식 클래스만 가능 (상위 클래스 제한)
<? super C>	//A, B, C 가능 → C 클래스와 상위 클래스만 가능 (하위 클래스 제한)

 

'IT국비지원' 카테고리의 다른 글

[JAVA] JDBC 연결 (MySQL)  (0) 2021.11.15
[JAVA] 네트워크  (0) 2021.11.11
[JAVA] 컬렉션 (List, Set, Map)  (0) 2021.11.11
[JAVA] 스레드  (0) 2021.10.27
[JAVA] 기본 API 클래스  (0) 2021.10.26
[JAVA] 문자열 (String)  (0) 2021.10.26
[JAVA] 예외 처리  (0) 2021.10.25
Comments