[ 2. Generic (제너릭) Type - 사용예문1 ]
1. Generic Type
- 예) class<T>
interface<T>
2. 일반적인 개발방법
- 개발방법 : StudentPerson과 EmployeeInfo가 같은 구조로 개발 된 소스
3. 단순 중복 제거
- 개발방법 : 중복 class제거
- 단, 위 소스에서 컴파일은 정상적으로 진행되지만 실행오류가 발생한다.
[ Person p1 =
new
Person(
"부장"
); ] 이 부분을 보면
클래스 Person의 생성자는 매개변수 info의 데이터 타입이 Object이다. 따라서 모든 객체가 될 수 있다. 그렇기 때문에 위와 EmployeeInfo의 객체가 아니라 String이 와도 컴파일 에러가 발생하지 않는다. 대신 런타임 에러가 발생한다. 컴파일 언어의 기본은 모든 에러는 컴파일에 발생할 수 있도록 유도해야 한다는 것이다. 런타임은 실제로 애플리케이션이 동작하고 있는 상황이기 때문에 런타임에 발생하는 에러는 항상 심각한 문제를 초래할 수 있기 때문이다.
위와 같은 에러를 타입에 안전하지 않다고 한다. 즉 모든 타입이 올 수 있기 때문에 타입을 엄격하게 제한 할 수 없게 되는 것이다.
4. Genric화 된 소스
- p1은 잘 동작할 것이다. 중요한 것은 p2다. p2는 컴파일 오류가 발생하는데 p2.info가 String이고 String은 rank 필드가 없는데 이것을 호출하고 있기 때문이다. 여기서 중요한 것은 아래와 같이 정리할 수 있다.
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
1. Generic (제너릭) - 기본 개념 (0) | 2017.03.15 |