ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제네릭이 멀까
    개발/java 2021. 12. 22. 00:56

    구체적인 정의는 아래와 같습니다. 

     

    제네릭:  클래스 내부에서 사용할 데이터 타입을 외부에서 설정 한 기법으로 메서드나 컬렉션 클래스 컴파일 시 타입체크의 기능을 해주는 역할을 한다. 

    사용할 타입에는 참조타입만 들어가며 기본타입의 경우 래퍼클래스를 통해서만 사용할 수 있다.

     

    주로 이걸 사용하는 부분을 생각해보시면 ArrayList , List 가 있습니다. 

    ArrayList<String> temp = new ArrayList<>();

    이렇게 되면 temp에는 String을 제외한 어떤것도 넣을 수 없습니다. 

    temp.add("스트링");
    temp.add(1); //컴파일에러

     

    제네릭은 한정적 타입 매개변수를 통해서 범위를 제한할 수 있습니다. 

    방식에는 두가지 extends 와 super가 있습니다. 

     

    1. 해당 참조 타입을 특정 타입만 타입으로 가지기 위해서는 super를 사용합니다. 

    public void onlyNumber(List<? super Integer> list)

    2. 해당 참조 타입이 특정 타입을 포함해서 가지고 싶다면 extends를 사용합니다. 

    public void includeNumber(List<? extends Integer> list)

     

    여기서 ? 라는 이상한게 나왔습니다. 

    물음표가 가지는 의미와 같이 알려지지 않은 타입을 나타내며  null 외에는 어떤 원소도 넣을 수 없습니다. 

    '개발 > java' 카테고리의 다른 글

    Builder 패턴 활용기  (1) 2021.12.25
    Stream.of vs Arrays.stream  (0) 2021.12.23
    Iterate는 멀까  (0) 2021.12.18
    enum 활용법  (0) 2021.12.15
    메모리와 스택과 힙  (0) 2021.12.14

    댓글

Designed by Tistory.