Generic

이원석·2022년 4월 20일
0

Java

목록 보기
3/9
post-thumbnail

1. 제네릭(Generic)


제네릭이란 모든 종류의 타입을 다루기 위해 일반화된 타입 매개변수(Generic Type)으로 클래스나 메서드를 선언하는 기법입니다. 동시에 여러 타입을 선언할 수 있습니다.
즉 파라미터 타입이나 리턴 타입에 대한 정의를 외부로(Complie) 미룹니다.

class Test<T>{
	
    private T data;
    
    pulic void setData(T data){
    	this.data = tata;
    }
    
    public T getData(){
    	return data;
    }
    
Test<String> test1 = new Test<String>();
test1.setData("Test");
String get = test1.getData();

위의 예시처럼 제네릭 타입으로 String 클래스를 전달하게 되면 제네릭 타입의 멤버나 메소드의 파라미터, 리턴타입이 제네릭 파라미터로 전달받은 클래스 타입으로 유연하게 바꾸어주며, 제네릭 파라미터에 의해 타입이 고정되므로 안정성이 확보됩니다.

제네릭은 코드 실행후 컴파일 시점에서 자동으로 검사되어 타입 변환 후 클래스파일로 변환됩니다. 컴파일 된 클래스 파일에는 어떠한 제네릭 타입도 포함되지 않습니다.




1-1. 제네릭 메소드

제네릭 메소드(Generic Method)는 자바에서 제네릭 타입(Generic Type)을 이용하여 타입 안정성을 보장하면서 다양한 타입의 객체를 다룰 수 있도록 하는 메소드입니다. 제네릭 메소드는 메소드의 선언부에 제네릭 타입 매개변수를 사용하고, 이를 메소드 내에서 사용하는데, 메소드를 호출할 때에는 타입 인자를 전달하여 실제 타입을 지정합니다.

public class GenericMethodExample {

	// <T>는 제네릭 타입 매개변수를 선언하는 부분.
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        String[] stringArray = { "Java", "is", "fun" };

        System.out.println("Printing Integer Array:");
        printArray(intArray);

        System.out.println("Printing String Array:");
        printArray(stringArray);
    }
}

위의 코드는 printArray() 메소드를 제네릭 메소드로 선언하고, 메소드 내에서 배열의 요소를 출력하는 기능을 수행합니다. 메소드 호출 시, 인자로 넘겨지는 배열의 타입에 따라 제네릭 타입 매개변수 T가 실제 타입으로 대체됩니다. 이를 통해, printArray() 메소드는 어떤 타입의 배열이든지 처리할 수 있게 되어 유연성이 높아집니다.

위의 예시에서는 Integer와 String 타입의 배열을 대상으로 printArray() 메소드를 호출했지만, 이 메소드는 모든 타입의 배열을 처리할 수 있습니다. 예를 들어, Double[]이나 Character[] 등 다른 타입의 배열도 printArray() 메소드를 호출하여 처리할 수 있습니다.





[참고문헌]
https://github.com/WeareSoft/tech-interview/blob/master/contents/java.md
https://jehuipark.github.io/java/java-generic
http://www.tcpschool.com/java/java_generic_concept

0개의 댓글