rhanziy

Java - 제네릭스 본문

Java

Java - 제네릭스

rhanziy 2023. 4. 11. 10:30
<>를 제네릭(Generics)이라 하는데, 이 <>안에 어떠한 타입을 선언해주어 해당 ArrayList, List 등이 사용할 객체의 타입을 지정해준다는 뜻이다. 이는 다룰 객체의 타입을 미리 명시하여 객체의 형변환을 사용할 필요없게 하며, 내가 사용하고 싶은 데이터 타입만 사용할 수 있게 해주는 효과가 있다. 

 

package Chap_09;

public class Generics {
	public static void main(String[] args) {
		
		// 제네릭스 > 객체 지원, 서로 다른 타입이여도 처리 가능함, 불필요한 코드 중복을 줄여준다. 
		// refer 클래스로 변환 필요 Integer.parseInt() , String.valueOf(), Double.toString()
		
		Integer[] iArray = { 1,2,3,4,5 };
		Double[] dArray = { 1.0, 2.0, 3.0, 4.0, 5.0 };
		String[] sArray = { "A", "B", "C", "D", "E" }; 
		
		
		
		printIntArray(iArray);
		printDoubleArray(dArray);
		printStringArray(sArray);
		
		System.out.println("--------------------------");
		
		printAnyArray(iArray);
		printAnyArray(dArray);
		printAnyArray(sArray);
	}
	
	// T : Type, K : key, V : value, E : Element
	private static <T> void printAnyArray(T[] array) {
		for (T t : array) {
			System.out.print(t + " ");
		}
		System.out.println();
	}
	
	
	
	private static void printStringArray(String[] sArray) {
		for (String s : sArray) {
			System.out.print(s + " ");
		}
		System.out.println();
	}

	private static void printDoubleArray(Double[] dArray) {
		for (double d : dArray) {
			System.out.print(d + " ");
		}
		System.out.println();
	}

	private static void printIntArray(Integer[] iArray) {
		for (int i : iArray) {
			System.out.print(i + " ");
		}
		System.out.println();
	}
	

}

 

Integer[ ] iArray = { 1,2,3,4,5 };
Double[ ] dArray = { 1.0, 2.0, 3.0, 4.0, 5.0 };
String[ ] sArray = { "A", "B", "C", "D", "E" }; 

 

배열에 담긴 데이터를 forEach문을 통해 출력하려면

 

printIntArray(iArray);
printDoubleArray(dArray);
printStringArray(sArray);

 

각각의 메서드를 만들어야하는 불편함을 제네릭스를 이용해 하나의 메서드만으로도 처리할 수 있다.

 

	// T : Type, K : key, V : value, E : Element
	private static <T> void printAnyArray(T[] array) {
		for (T t : array) {
			System.out.print(t + " ");
		}
		System.out.println();
	}

 

printAnyArray(iArray);
printAnyArray(dArray);
printAnyArray(sArray);

 

 

코드의 재사용성이 올라가고 다형성을 구현할 수 있다.  js의 타입스크립트 느낌~

 

 

 

 

 

'Java' 카테고리의 다른 글

SQL - OUTER JOIN 외부조인  (0) 2023.04.17
Java - 제네릭 클래스  (0) 2023.04.11
Java - 추상클래스와 인터페이스  (0) 2023.04.10
2023.04.06. 작은실습  (0) 2023.04.06
Java - Enum 열거형  (0) 2023.04.06
Comments