반응형
💋 제네릭이란?
데이터의 타입(data type)을 일반화(generalize)하는 것을 의미한다.
💋 제네릭 사용 이전의 코드
ArrayList values = new ArrayList();
values.add("this is string");
values.add(1);
values.add(new Position(1, 2));
String first = (String) values.get(0);
int second = (int) values.get(1);
Position third = (Position) values.get(2);
제네릭을 통해서 타입을 지정하기 이전의 세상은... 이렇게 리스트가 자유로웠다!
한 리스트에 String, int, 참조타입 등등 원하는건 다 넣을 수 있었다. 완전 좋은거 아닌가?
바로 아래에서 문제가 발생한다. get()을 통해 하나를 가져오려 해도 매번 형변환이 필요했다.
💋 제네릭 사용 이후의 코드
List<String> values = new ArrayList<String>();
values.add("first");
values.add("second");
String first = values.get(0);
String second = values.get(1);
<> 안에 내가 사용하고 싶은 타입을 지정해줄 수 있다.
컴파일러가 내가 추가한 타입이 지정된 타입인지 검사하기 때문에, String의 List에 Integer를 저장하게 되면 컴파일 에러가 발생하게 된다.
반응형
'JAVA' 카테고리의 다른 글
[Spring] Spring Core(3): IoC Container의 개념, 생명 주기 (2) | 2023.04.23 |
---|---|
[JAVA] 좋은 코드가 되려면 꼭 지켜야 할 기본적인 컨벤션 (0) | 2023.04.13 |
[JAVA] 원시값 포장과 VO(Value Object) (0) | 2023.03.30 |
[JAVA] 리스트(List) 정렬: Collections.sort() 코드를 뜯어보았다, Comparable (0) | 2023.03.27 |
[JAVA] 컴포지션(Composition): 조합이 뭘까? 컴포지션의 개념/사용, 상속을 사용한 코드를 조합을 사용한 코드로 바꿔보기! (4) | 2023.03.23 |