WEB JAVA SPRING/문법

제네릭스

sshhhh 2023. 8. 24. 14:43

제네릭스 ArrayList<Type> pitches = new ArrayList<>();

 

사용하지 않은 예시

- ArrayList에 추가하는 객체는 Object 자료형(가장 기본)으로 인식

-따라서 ArrayList 객체인 pitches에 값을 넣을 때는 문제가 없지만
값을 가져올 때는 매번 Object 자료형에서 String 자료형으로 형 변환(casting) 을 해야 한다

ArrayList pitches = new ArrayList();
pitches.add("138"); // Object형으로 인식(객체형이 가장기본)
pitches.add("129");

//추가할때마다 일일이 Object 자료형을 String 자료형으로 형 변환해야함
String one = (String) pitches.get(0);  
String two = (String) pitches.get(1);

이때 주의할 점은 pitches에는 String 외의 다른 객체도 넣을 수 있어서 형 변환 오류가 발생할 수 있다는 것이다.

 

사용예시

ArrayList<String> pitches = new ArrayList<>(); //<String> 으로 설정 
pitches.add("138");
pitches.add("129");

String one = pitches.get(0);  // 형 변환이 필요없다.
String two = pitches.get(1);

 

 

실습

제네릭 프로그래밍은 다양한 종류의 데이터를 처리할 수 있는 클래스와 메소드를 작성하는 기법이다.

대표적인 예가 ArrayList 클래스이다.

 ArrayList<T>는 어떤 종류의 객체도 저장할 수 있는 배열인데,

여기서 T는 배열에 저장되는 타입을 나타내는 매개변수이다.

 

제네릭 클래스는 클래스를 정의할 때,

클래스 안에서 사용하는 자료형을 구체적으로 명시하지 않고 T와 같이 기호로 적는다.

 

나중에 객체를 생성할 때, T 자리에다 구체적인 자료형을 적는다. 다시 말해서 자료형을 클래스의 매개변수로 만든 것이다.

정수형 ArrayList ArrayList<Integer> = new ArrayList<Integer>();

 

public class MyArray {
	
	public static <T> void Swap (T[] x, int i,int j){
		
		T temp;
		
		temp =x[i];
		x[i]=x[j];
		x[j]=temp;
	}

}

 

public class MB_Exam17_Generi {

	public static void main(String[] args) {
		
		
		Integer[] y = {0,1,2,3,4};//이게 T=integer가 된다
		Double[] z = {0.1,1.2,2.3,3.4,4.5};
		
		int i;
		
		System.out.println("Before Swapping array y");
		
		for(i=0;i<=4;i++)
		{
			System.out.print(y[i]+",");
		}
		System.out.println();
		System.out.println();
		
		
		MyArray.Swap(y, 2, 4);
		
		
		System.out.println("After Swapping array y");
		
		for(i=0;i<=4;i++)
		{
			System.out.print(y[i]+",");
		}
		System.out.println();
		System.out.println();
		
		
		////////////////////////////////

		System.out.println("After Swapping array z");
		
		for(i=0;i<=4;i++)
		{
			System.out.print(z[i]+",");
		}
		System.out.println();
		System.out.println();
		
		
           MyArray.Swap(z, 2, 4);
		//다른 자료형이지만 바뀐다.
		
		System.out.println("After Swapping array z");
		
		for(i=0;i<=4;i++)
		{
			System.out.print(z[i]+",");
		}
		System.out.println();
		System.out.println();
		
		
		
	}

}

 

출력