[꼼꼼한 개발자] 꼼코더

[JAVA] - 제네릭이란?(Generic) 간단하고 쉽게 이해하기 (제네릭의 장점) 본문

간단하고 쉽게/JAVA

[JAVA] - 제네릭이란?(Generic) 간단하고 쉽게 이해하기 (제네릭의 장점)

꼼코더 2022. 12. 20. 17:27
반응형

👨🏻‍🏫 간단정리

  • ‘<>’가 들어간 자바 코드.
  • ‘<>’ 안에 타입 파라미터가 위치한다.
  • 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용하여 컴파일 시 구체적인 타입이 결정될 수 있도록 도와주는 것.

❓ 제네릭(Generic)이란?

  • 자바 5 부터 새로 추가된 기능.
  • ‘<>’ 안에 타입 파라미터가 위치
  • 컬렉션, 람다식(함수적 인터페이스), 스트림, NIO에서 널리 사용된다.
  • 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용하여 컴파일 시 구체적인 타입이 결정될 수 있도록 도와줍니다.
  • 제네릭은 클래스와 인터페이스만 적용되기 때문에 자바  기본 타입(Primitive Type)은 사용할 수 없다.

😊 제네릭의 장점

1️⃣ 컴파일 시 강한 타입 체크를 할 수 있다.

  • 컴파일 시 에러를 다 도출해내기 때문에 실행 중에 일어나는 에러(RuntimeException) 를 방지할 수 있습니다.
*// List Integer 타입으로 제네릭 타입 적용*
List<Integer> list = new ArrayList();
list.add(1);
list.add("5"); // 컴파일 ERROR > 'String' 타입 x

 

2️⃣ 타입 변환을 제거한다.(casting)

  • 제네릭을 사용하지 않는 경우 불필요한 타입 변환이 필요.
  • 따라서 프로그램 성능에 좋지 않은 영향을 미침.
List list = new ArrayList();
list.add(1);

// 강제 형 변환 필요 
Integer number = (Integer) list.get(0)

👀 제네릭을 사용하지 않는다면?

  • 물론 제네릭을 사용하지 않으면 다음과 같이 모든 종류의 객체를 저장할 수 있다.
  • 제네릭을 사용하지 않고 값을 추가하면 Object 형태로 변환 (타입변환) 되어 List에 쌓인다..
  • 하지만 읽어올 때에도 타입 변환이 발생하게 된다..
List list = new ArrayList();
list.add(1);
list.add("5");
list.add(0.1);

// 값 저장하기
// 모든 타입의 조상인(모든 타입 수용) Object로 형변환
Object o1 = list.get(0);
Object o2 = list.get(1);
Object o3 = list.get(2);

// 값 읽기
// 각 값의 타입의 알맞게 Wrapper 클래스로 형변환
Integer num = (Integer) o1;
String str = (String) o2;
Long L = (Long) o3;

 

 

참고 : https://veneas.tistory.com/entry/Java-%EC%A0%9C%EB%84%A4%EB%A6%AD-%EC%82%AC%EC%9A%A9-%EC%9D%B4%EC%9C%A0-Why-do-use-Generic-in-Java

Comments