2019년 5월 7일 화요일

Hackerrank Day 21 Generics







알고리즘 연습 사이트


Day 21:Generics



Generics 참고 URL - oracle API 
Generic Types
Generic Methods
Type Inference



배열의 요소들을 출력하는 printArray 메소드를 제네릭을 이용하여 구현한다.
Printer 클래스의 인스턴스를 만들 때 데이터 타입을 지정해야한다. Class Printer가 제네릭으로 선언되어 있기 때문이다.
class안에 T로 되어있는 부분들은 인스턴스 생성시 지정했던 데이터 타입으로 전부 변환된다.


아래 코드를 보면 이해하기가 쉽다.



class Printer <T> { //class 선언 시 제네릭으로 데이터형을 선언한다.

    /**
    *    Method Name: printArray
    *    Print each element of the generic array on a new line. Do not return anything.
    *    @param A generic array
    **/
    
    // Write your code here

    void printArray(T[] array){ //다양한 형태의 데이터 타입 배열을 인자로 받아들일 수 있다.
        for(T temp : array){
            System.out.println(temp);
        }
    }
}
public class Generics {
    
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Integer[] intArray = new Integer[n];
        for (int i = 0; i < n; i++) {
            intArray[i] = scanner.nextInt();
        }

        n = scanner.nextInt();
        String[] stringArray = new String[n];
        for (int i = 0; i < n; i++) {
            stringArray[i] = scanner.next();
        }
        
        Printer<Integer> intPrinter = new Printer<Integer>(); //T가 Integer가 됨
        Printer<String> stringPrinter = new Printer<String>(); //T가 String이 됨

        intPrinter.printArray( intArray  );
        stringPrinter.printArray( stringArray );
        if(Printer.class.getDeclaredMethods().length > 1){
            System.out.println("The Printer class should only have 1 method named printArray.");
        }
    } 
}



댓글 없음:

댓글 쓰기