제네릭이 뭐냐면
<타입> 이다.
가장 중요한 개념은 담을 때는 상관 없고, 꺼낼 때가 중요하다 임.
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);
이런식으로 더 편하게 쓸 수 있게됨.
+ 말 나온김에 람다에 대해서 좀 더 얘기해보자면 다음 포스팅 참고
반응형
'Chapter01 > Sping boot' 카테고리의 다른 글
@SuppressWarnings( "unchecked" ) (2) | 2025.08.27 |
---|---|
[ 보안 취약점 조치 ] Clickjacking 공격 (0) | 2025.06.26 |
[Spring boot ] Load balancer health Check (0) | 2025.06.13 |
[ 2Factor 인증] Google Authenticator 인증 java코드 (0) | 2025.04.25 |
[ node ] npm 명령어 (0) | 2025.01.13 |