목차
- 오늘 배운 것
- Java 공부
- 제네릭 (Generic)
- Java 공부
제네릭 (Generic)
어느정도 자바와 친해졌다고 생각하지만 그럼에도 가끔 사용하면서 헷갈리는 것들이 있다..
오늘은 그 중 하나인 제네릭에 대해 강의를 들으며 개념을 쌓아나갔다.
제네릭은 클래스, 인터페이스 그리고 메소드를 정의할 때, 타입을 파라미터로 사용할 수 있도록 해준다.
=> 어떤 클래스, 인터페이스, 메서드를 이용할 때, 잘못된 타입의 데이터로 사용될 때 일어날 수 있는 문제를
컴파일 하는 시점에 확인하고 제거할 수 있게 하는 거다.
간단하게 예를 들어 Integer 리스트를 받아 해당 Element를 Long 타입으로 변환하여 리턴하는 메서드를 작성한다면
public static List convertIntToLong(List intList) {
if(intList.isEmpty()) {
return Collections.emptyList();
}
List longList = new ArrayList();
for( int i = 0; i < intList.size(); i++ ) {
Integer integer = (Integer) intList.get(i);
longList.add(integer.longValue());
}
return intList;
}
파라미터로 들어오는 리스트가 [1, 2, 3, ...] 이면 정상적으로 동작을 하겠지만
만약 리스트에 ["가", "나", "다", ...] 이런식으로 들어오면 어떻게 될까?
당연히 예외가 발생한다..
Exception in thread "main" java.lang.NumberFormatException: For input string: "가"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:668)
at java.base/java.lang.Integer.parseInt(Integer.java:786)
해당 메서드를 사용할 때, List에 들어오는 요소의 타입을
이처럼 실행(런타임)단계에서 발생될 수 있는 타입에 따른 문제들을 컴파일 전에 타입을 지정하여 예방, 해결하도록 도와주는 것이 제네릭 인 것이다.
이 점을 잘 생각하고 사용하면 정말 유용한 문법이 될 것 같다~
느낀 점
코드를 보면서 이해가 안가는 것들은 해당 코드로 해결하고자 하는 것이 무엇인지, 왜 이것을 만들었는지 먼저 이해하고 코드를 보면
더 잘 이해하는 느낌을 많이 받았다. 앞으로 이런 경우가 있을 경우 코드 자체를 이해하려 하기보다는 코드의 목적을 이해해보려고 해야겠다.
728x90
'TIL' 카테고리의 다른 글
2023.10.26 TIL (0) | 2023.10.26 |
---|---|
2023-10-24 TIL (2) | 2023.10.24 |
2023.10.20 TIL (0) | 2023.10.20 |
2023.10.19 TIL (0) | 2023.10.19 |
2023.10.18 TIL (2) | 2023.10.19 |