Skip to content
Jang HyungSuk edited this page Jan 11, 2022 · 1 revision

제네릭

LinkedList를 직접 구현하는 과정에서 나는 VideoData 자체를 노드로 보고 VideoData만을 취급하는 myLinkedList 클래스를 설계했다. 하지만 준, 피오, 후, 땃쥐, sally, Jay 등 많은 멤버들이 제네릭을 이용해 범용적인 LinkedList를 구현 한 후에 이를 사용하는 것을 보고 나도 범용적인 LinkedList를 구현하고 싶었다. 이를 위해서 가장 기본이 되어야 하는 것이 제네릭이라고 생각해서 제네릭에 대해 공부를 해봤다.


제네릭이란?

  • 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법
  • 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입을 체크를 해주는 기능
  • 컴파일 시에 타입을 체크하기 때문에 타입 안정성을 높일 수 있음

많이 쓰이는 제네릭

타입 설명
<T> Type
<E> Element
<K> Key
<V> Value
<N> Number

제네릭 클래스 선언

class Node {
	Object data;
	Node nextNode;

	public Node(Object o) {
		this.data = o;
		nextNode = null;
	}
}
class Node<E> {
	E data;
	Node<E> nextNode;

	public Node(E o) {
		this.data = o;
		next = null;
	}
}

모든 데이터 타입이 들어올 수 있었던 초기의 Node와 달리 두번째에서 제네릭을 이용해서 만든 노드는 Node<Integer> mynode = new Node<>(); 와 같이 해서 Integer만 담거나 내가 구현한 VideoData만 담을 수 있게 할 수 있다.

주의사항

제네릭에는 참조 타입만 들어갈 수 있다. 즉 primitive Type인 byte, short, int, long ... 은 사용할 수 없다.

Clone this wiki locally