JAVA 제너릭?
제너릭….자바를 공부하면서 분명 한번은 들어봤을겁니다. (안들어봤다면 자…ㅅ..ㅏ.ㄹ)
제너릭이란 : 타입의 일반화
즉, 클래스 내부에서 정하는것이 아닌 사용자 호출에 의해 타입이 지정되는 것을 의미합니다!
특정 타입이 변수에 지정되는 것이 아닌 필요에 의해 여러가지 타입을 사용하고 싶을 경우에 사용합니다!
저희는 알게 모르게 진짜 많이 썼어요 이걸…….어딜까요오?!
Collection ⇒ List, Map, Set
자 한번 잘 생각해보세요!
List를 사용하기위해 객체를 생성할때 어떻게 했죠?
List<String> list = new List<String>();
어? String 말고도 Integer, Charatcer, Double, Float 다 들어갈수 있죠?
그건 저희 마음대로 지정해서 사용하는거고요??? ⇒ 클래스 내부에서 정하는것이 아닌 사용자 호출에 의해 타입이 지정되는 것
끗
은 아니고요!
그렇다면 제너릭 타입이란?
제너릭 타입은 데이터타입을 파라미터로 가지는 클래스와 인터페이스를 말합니다!
즉 제네릭 타입은 변수가 아니라 클래스, 인터페이스를 말해요 🙂
제너릭 타입은 클래스, 인터페이스 이름 뒤에 <>를 쓰고 타입 파라미터(T)를 명시해야 합니다!
이렇게 선언을 하면 특정 파라미터 타입에 종속되지 않는 장점이 있죠?
( 내맘대로 어디든 대나무 헬레콥터 >< )
public class 클래스명<T> {...}
public interface 인터페이스명<T> {...}
제너릭 타입 파라미터(인자)
타입 파라미터는 보통 A~Z까지를 사용합니다. 꼭 T 일 필요는 없어용!
보통은 위에 표처럼 의미를 부여하고 (약간 개발자끼리 약속이랄까?) 사용을 합니다!
제너릭 사용하는 이유는요?
클래스 내부에서 타입을 정의하는게 아니라 외부에서 정한다고 했죠? 필요에 의해서!
그러면 뭐가 좋겠어요 ㅡㅡ;
- 재사용성 증가 ⇒ 동일한 메소드에서 파라미터 타입만 다르게 사용 가능 즉, 코드가 간결해지고 재사용성이 올라간다.
- 컴파일시 타입 에러 발견 가능 ⇒ 런타임 단계에서 타입으로 인한 문제가 발생될 가능성을 없애준다.
- 컴파일러가 타입 변환을 수행 ⇒ 불필요하게 코드에서 캐스팅할 이유가 없다..
솔직히 제일 큰 장점은 1번입니다 🙂
예제:
public interface FrameMapper<K,V> {
public void insert(V v) throws Exception;
}
자 위에 처럼 인터페이스에 타입을 제너릭으로 설정해줬습니다!
그러면 실제로 상속을 받아서 구현하는데에서는 자기 입맛대로 골라 (쳐) 먹는 뷔페가 완성된거에요!
public class AccountMapper implements FrameMapper<String, AccountDTO>{
public void insert(AccountDTO) throws Exception{
AccountDTO dto = new AccountDTO();
insert(dto);
}
}
존맛탱….
public class AccountMapper implements FrameMapper<String, Integer>{
public void insert(Integer) throws Exception{
insert(5);
}
}
ㅈ…ㅈ맛탱 너무 간단하쥬?
진짜 끘.
'Java' 카테고리의 다른 글
Static 이란? (0) | 2023.01.13 |
---|---|
2ndArray 2차원배열 (0) | 2023.01.13 |
AutoBoxing, AutoUnboxing 이란? (0) | 2023.01.13 |
JAVA 객체지향프로그래밍 ⇒ OOP? (0) | 2023.01.13 |
JAVA의 컴파일러, JVM (Java Virtual Machine) (0) | 2023.01.13 |