제네릭
ㅡ 메서드나 컬렉션 클래스의 타입을 체크
ㅡ 컴파일 시 체크해주기 때문에 타입 안정성 ↑, 형변환 번거로움 ↓
List<String> strList = new ArrayList();
List : 원시 타입
String : 타입 변수
List<String> : 제네릭 클래스
List strList = new ArrayList();
strList.add("기본 문자열");
String str = strList.get(0); // SOLID 원칙에 어긋난다. 최상위 클래스 object(부모)가 String(자식)이 된다는 꼴
// 강제 형 변환하면 사용은 가능함 → (String)strList.get(0);
// 제네릭을 사용하지 않으면 매 번 형변환 작업을 해줘야 함
List<String> strList2 = new ArrayList<>();
strList2.add("기본 문자열2");
제네릭 명시없이 Collection Class클래스를 생성하고 사용할 수 있으나 값을 호출하여 사용하거나 할 때 참조변수 앞에 강제 형변환을 적어줘야한다.
애초부터 제네릭을 명시해주고 사용하면 편리하다.
*제네릭은 다형성 X
ㅡ 제네릭 클래스 객체 생성 시 참조변수의 타입과 생성자에서 지정한 제네릭 타입은 일치해야 한다.
List<Integer, Human> list = new ArrayList<Integer, Human>();
List<Integer> list2 = new ArrayList<Human>(); // 에러
* 제한된 제네릭
ㅡ 타입변수에 extends 사용하면 특정 타입 자손들만 대입 가능 / 인터페이스도 implements말고 extends 사용
Class Animal<Cat extends Cat1 & Cat2> {};
'Java' 카테고리의 다른 글
이클립스, MySQL 파일 연동 (0) | 2023.01.26 |
---|---|
삼항 연산자 (0) | 2023.01.17 |
스레드 ( Thread ) (0) | 2023.01.13 |
ArrayList (0) | 2023.01.12 |
컬렉션 프레임워크 ( Collection Framework ) / 제네릭 ( Generic ) (0) | 2023.01.12 |
댓글