Chapter01/Sping boot

[Spring boot] Generic

EmmaDev_v 2025. 8. 26. 17:36

 

제네릭이 뭐냐면

<타입> 이다.

가장 중요한 개념은  담을 때는 상관 없고, 꺼낼 때가 중요하다 임.

 

 

 

Java 5 부터 사용한 기능인데

예시로 보는게 이해가 빠름 ㄱㄱ

 

제네릭을 사용하지 않는 경우

List list = new ArrayList(); // 타입 정보 없음
list.add("사과");  // String
list.add(123);     // Integer
list.add(true);    // Boolean

String fruit = (String) list.get(1);

 

전부 Object 취급을 하고 담음.

꺼낼 때 타입 캐스팅이 필요함.

 

 

 

 

제네릭을 쓰는 경우

List<String> list = new ArrayList<>();
list.add("사과");
list.add("바나나");
// list.add(123);  // ❌ 컴파일 에러!

String fruit = list.get(0); // ✅ 안전

담을 때 부터 컴파일러가 타입을 체크함.

잘못된 타임은 아예 넣을 수 없어 코드가 더 명확해짐.

 

 

 

 

 

그리고 그 이후 버전에서는

 

Java 7 이후

: <>을 도입해 타입 추론 가능

List<String> list = new ArrayList<>(); // 뒤에 <String> 생략 가능

 

 

Java 8 이후

: 스트림 API, 람다와 제네릭 결합해서 활용 가능 

List<String> list = Arrays.asList("a", "b", "c");
list.stream().forEach(System.out::println);

 

 

이런식으로 더 편하게 쓸 수 있게됨.

 

 

+ 말 나온김에 람다에 대해서 좀 더 얘기해보자면  다음 포스팅 참고

반응형