[ 2. Generic (제너릭) Type - 사용예문1 ]

 

* 1. Generic 기본 개념 및 기본 예제

1. Generic Type

    - 예) class<T>

            interface<T>

 

2. 일반적인 개발방법

    - 개발방법 : StudentPerson과 EmployeeInfo가 같은 구조로 개발 된 소스

   

 

3. 단순 중복 제거

    - 개발방법 : 중복 class제거

    

 

    - 단, 위 소스에서 컴파일은 정상적으로 진행되지만  실행오류가 발생한다. 

    

      [ Person p1 = new Person("부장"); ] 이 부분을 보면

   클래스 Person의 생성자는 매개변수 info의 데이터 타입이 Object이다. 따라서 모든 객체가 될 수 있다. 그렇기 때문에 위와 EmployeeInfo의 객체가 아니라 String이 와도 컴파일 에러가 발생하지 않는다. 대신 런타임 에러가 발생한다. 컴파일 언어의 기본은 모든 에러는 컴파일에 발생할 수 있도록 유도해야 한다는 것이다. 런타임은 실제로 애플리케이션이 동작하고 있는 상황이기 때문에 런타임에 발생하는 에러는 항상 심각한 문제를 초래할 수 있기 때문이다.

위와 같은 에러를 타입에 안전하지 않다고 한다. 즉 모든 타입이 올 수 있기 때문에 타입을 엄격하게 제한 할 수 없게 되는 것이다.

 

4. Genric화 된 소스

    - p1은 잘 동작할 것이다. 중요한 것은 p2다. p2는 컴파일 오류가 발생하는데 p2.info가 String이고 String은 rank 필드가 없는데 이것을 호출하고 있기 때문이다. 여기서 중요한 것은 아래와 같이 정리할 수 있다.

  • 컴파일 단계에서 오류가 검출된다.
  • 중복의 제거와 타입 안전성을 동시에 추구할 수 있게 되었다.   
  •    

     

    참고URL : https://opentutorials.org/module/516/6237

    Posted by 농부지기
    ,

    Collection, Vector, Iterator, ArrayList, ... 등 모두 존재 

     

    http://ehclub.co.kr/3046

    http://ehclub.co.kr/3083

    Posted by 농부지기
    ,

    [ 1. Generic(제너릭) - 기본 개념 ]

     

    1. 기본 Generic

        - 어떤 자료형이 들어갈지 정의하는 것

        - 어떤 자료형이 들어 갈지 명시적으로 정의하고, get, set시 자료형을 제한할 수도 있다.

     

    2. 기본 Generic 사용예

          1. Generic 미 지정 시 : 매번 Casting을 해야 되므로 성능에 않좋다.

            

     

         2. <String>이라는 Generic 지정 시  : 요소를 찾아올 때 Casting이 필요 없어 프로그램 성능이 향상 된다.

            

     

    10. Generic Type 정의

        - 제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.

        - 여러 형식에 맞게 재사용할 수 있는 코드를 정의하는 기술이다.

        - Generic 코드를 정의 할 때는 가상의 형식 이름을 <가상형식이름>처럼 정의하고 사용하는 곳에서 어떠한 형식에 관한 코드를 사용할 것인지 명시하여 사용하는 기법이다.

         - 그래서 클래스 내부에서 사용할 데이터 타입을 미리 정의하지 않고

            외부Class에서 사용시점에 지정하는 기법을 의미한다.

     

    11. Generic Type 종류

       - E : Element

       - K : Key

       - V : Value

       - N : Number

       - T : Type

       - S, U, V etc - 2nd, 3rd, 4th types

     

    12. Generic Type 와일드카드

       - 정의 : 와일드카드는 알 수 없는 자료형일 때 작성하는 Generic type이다.

       - <?> : 모든 객체 자료형, 내부적으론 Object로 인식 한다.

       - <? super [자료형]> : 명시한 자료형의 상위 객체를 의미한다.

                                               내부적으론 Object로 인식한다.

       - <? extends [자료형]> : 명시한 자료형을 상속한 하위 객체를 의미한다.

                                                   내부적으론 명시한 자료형으로 인식한다.

     

     

    11. Generic Type 사용예

        [ Person.java ]

         class Person<T>{  //Generic Type에 T 를 기술하여 데이터 타입을 지정하지 않는다.

               public T info;

         }

     

        [ User.java ]

         ....

         Person<String> p1 = new Persion<String>();  //instance화 할때 생성자에 데이터 타입 지정

         Person<StringBuilder> p2 = new Person<StringBuilder>();  //instance화 할때 생성자에 데이터 타입 지정

    Posted by 농부지기
    ,