<aside> 💡

타입을 컨파일시 결정하는게 아닌 실행할 때 결정

타입매개변수 <T> 클래스, 인터페이스, 메서드에 붙힐 수 있다.

</aside>

Generic이란

  1. 타입 추론

    1. 제네릭 메서드를 호출할 때 인자들의 타입을 참고하여 컴파일러가 알맞은 타입 매개변수를 자동으로 결정한다
    2. 개발자는 타입을 별도로 명시할 필요가 없으므로 코드가 더 간결해진다.
  2. 명시작 타입 지정

    1. 가끔 컴파일러의 추론이 원하는 타입과 다르게 작동할 수 있지만 호출 시점에 타입을 명확히 지정하여 코드 가독성을 높이고자 할 때 사용한다.
    2. 타입을 명시적으로 지정하면 오류를 방지하고 의도를 명확히 할 수 있다.

Generic 선언 및 생성

타입 파라미터 기호 네이밍

타입 설명
<T> 타입(Type)
<E> 요소(Element)
<K> 키(Key)
<V> 값(Value)
<N> 숫자(Number)

public class A<T> {

	T value;
	
}

A<String> a = new A<>();
a.value = "문자열";//문자열

A<Integer> a = new A<>();
a.value = 10;//정수

⇒ 타입 매개변수에 전달 → String value로 되는거

⇒제네릭은 형변환 안됨


클래스 타입의 매개변수에 쓸 수 있는거 (?타입을 쓸 수 없다)