2024.05.29.수.TIL 내일배움캠프 31일차 <Generic 은 무엇일까>

김기남·2024년 5월 29일
0
post-thumbnail

오늘은 다락방에서 함께 공부한 주제인
Generic 에 대해 심층적으로 알아보았습니다.

제네릭 (Generic) 이란 무엇? 제네릭 사용의 장점?

자바에서 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미합니다.
객체별로 다른 타입의 자료가 저장될 수 있도록 해줍니다.
클래스 선언 문법에 꺾쇠 괄호 <> 가 제네릭입니다. (다이아몬드 연산자, 제네릭의 타입 매개변수, 타입 변수)

class FruitBox<T> {
    List<T> fruits = new ArrayList<>();

    public void add(T fruit) {
        fruits.add(fruit);
    }
}

타입을 변수화 한 기능, 즉, 변수를 선언할때 변수의 타입을 지정해주듯이,
제네릭은 객체(Object)에 타입을 지정해주는 것이라고 보면 됩니다.
-제네릭 Like 메타몽-

자바의 다형성을 활용한 제네릭에도 제한을 걸어 줄 수 있는데,
Integer 나 Double 등의 부모 클래스인 Number 클래스를 제네릭에 상속시켜주면,
Integer 나 Double 등의 타입으로만 사용이 가능합니다.

<T extends Number>

제네릭을 사용하지 않고 Object를 사용해도 되긴하고, 실제로 제네릭이 등장하기 전까지 Object가 활용되었습니다.
그러나 Object로 타입을 선언할 경우 반환된 Object 객체를 다시 원하는 타입으로 일일히 타입 변환을 해야 하며, ClassCastException 런타임 에러가 발생할 가능성도 있습니다.
제네릭을 이용하면 클래스나 메서드를 정의할때 타입 파라미터로 객체의 서브 타입을 지정해주어, 타입 변환을 해줄 필요가 없고,
코드를 실행하기전 컴파일 타임에 미리 에러를 찾아 알려주기 때문에 런타임 에러를 미연에 방지를 할수 있습니다.
이처럼 제네릭은 개발을 용이하게 해주고, 타입 겁사에 들어가는 메모리를 줄일 수 있고 더불어 가독성도 좋아집니다.

참고: https://inpa.tistory.com/entry/JAVA-☕-제네릭Generics-개념-문법-정복하기 [Inpa Dev 👨‍💻:티스토리]

🍯오늘의 꿀팁 : 아스키코드에서 문자 0~9는 10진수 48~57

🪓몸으로 느낀 스킬 :
배열을 출력할때, 그냥 System.out.println() 을 하게되면 배열을 가리키는 주소값이 출력됩니다.
이때, Arrays.toString(), Arrays.deepToString() 을 사용해주면,
각각 1차원 배열, 다차원 배열을 문자열로 반환받아서 출력할수 있습니다.

profile
새로운 시작~!

0개의 댓글