알고리즘 연습 사이트
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.");
}
}
}
댓글 없음:
댓글 쓰기