-
타입 변수
- 지네릭스 클래스를 작성할 때, Object 타입 대신 타입 변수(E)를 선언해서 사용한다.
타입 변수에 대입하기
- 객체를 생성시, 타입 변수(E) 대신 실체 타입을 지정(대입)
- 타입 변수 대신 실제 타입이 지정되면, 형변환 생략 가능
예제
class Tv{} class Audio{} public class ANewDream109{ public static void main(String[] args){ ArrayList<Tv> list = new ArrayList<Tv>(); //Tv타입의 객체만 저장 가능 list.add(new Tv()); // list.add(new Audio()); -> 에러 Tv t = list.get(0); } }
위 예제에서 ArrayList<Tv> list = new ArrayList<Tv>();는 실제 타입을 타입 변수로 선언한 것이다.
때문에 Tv t = list.get(0); 앞에 형변환을 생략할 수 있다.
ArrayList 클래스에 대해 찾아보면 그 이유를 더 자세히 알 수 있다.
※ 이클립스에선 ctrl + o를 누르면 클래스의 멤버 목록이 나타난다.
add 멤버를 찾으면 아래와 같이 나와있다.
public boolean add(E e){ ensureCapacityInternal(size + 1); elementData[size++] = e; return true; }
add(E e)에서 E는 타입 변수다.
예제에서 이미 Tv를 타입 변수로 선언했으므로, 자동으로 E에 Tv가 들어간다.
따라서 Tv t = (Tv) list.get(0); 이렇게 형변환(타입 캐스팅)을 직접 쓰지 않아도,
형변환이 이미 이뤄진 상태가 된다.
지네릭스를 잘 활용하면 전체적인 코드가 깔끔해져 가독성이 좋아지니 잘 활용하면 좋을 것 같다.
'공부 > Java' 카테고리의 다른 글
Iterator<E> (0) 2024.04.22 지네릭스 용어, 지네릭 타입과 다형성 (0) 2024.04.20 지네릭스(Generics) (0) 2024.04.19 Collections 클래스 (0) 2024.04.18 해싱(hashing) (0) 2024.04.17