TIL

+15 제네릭스(Genrics)

JAVABOZA 2023. 6. 28. 10:58

스프링을 공부하면서 더욱 더 제네릭스의 필요성을 느껴 간단하게 정리해보려 한다.

 

제네릭(Generics)

:: 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 사용

:: <> 꺽쇠 기호 사용, 기호 안에 타입명을 기재 

:: 타입을 변수화 한 기능이라고도 표현함 / 객체에 타입을 지정해주는 것이라 보면 된다

:: 여러 개가 필요한 경우 2개, 3개 등 계속해서 추가활 수 있다, <T, B, Y, U>

  ※ 클래스 초기화할때는 제네릭 타입을 갯수에 맞게 넘겨주면 된다.

 

 

주의사항

:: !!!! static 멤버에는 제네릭 타입이 올수가 없다!!!!

class Sample<T> {
    public void someMethod() {
        // Type parameter 'T' cannot be instantiated directly
        T t = new T();   // x
    }
}

:: !!!! 제네릭 타입의 객체는 생성 불가 !!!!

:: !!!! 

 

 

 

 

제네릭타입 전파

아래링크 블로그 참조

 

 장점

타입의 안정성

의도하지 않은 타입의 객체가 저장되는 것을 막아주며, 다른 타입의 객체로 인한 타입 형태가 맞지 않아 발생하는 문제를 막아준다. 개발자가 코드실수를 줄여 줄 수 있다고 생각한다.

 

불필요한 형변환을 줄여서 코드의 간결함을 보여준다.

타입을 미리 명시해서 다른 타입의 객체가 저장되지 않아서 객체를 꺼내 사용할 시 형변환을 통한 타입을 맞출 필요가 없어 코드를 간결하게 줄여 줄 수 있다.

 

 

 

함수형인터페이스

 

 

 

 

 

 

 

 

 

 

 

▼▼아래의 개발블로그 참고▼▼

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%9C%EB%84%A4%EB%A6%ADGenerics-%EA%B0%9C%EB%85%90-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%B3%B5%ED%95%98%EA%B8%B0