본문 바로가기
Language/JAVA

[JAVA] Generic 메소드 작성

by 태옹 2021. 2. 14.

GStack을 이용하여 주어진 스택의 내용을 반대로 만드는 제네릭 메소드 reverse()를 작성하라. 

package exStack;
//스택 제네릭 클래스 작성
public class GStack<T> {
	int tos;	//현재 위치
	Object[] stck;
	public GStack(){
		tos = 0;
		stck = new Object[10];
	}
	public void push(T item) {
		if(tos==10) 	//스택이 꽉 찼을 때
			return;
		stck[tos] = item;
		tos++;
	}
	public T pop() {
		if(tos==0)		//스택이 비었을 때
			return null;
		tos--;
		return (T) stck[tos];	//타입 캐스팅
		
	}
}
package exStack;

public class GenericMethodExample {
	// T가 타입 매개 변수인 제네릭 메소드
	public static <T> GStack<T> reverse(GStack<T> st) {
		GStack<T> a = new GStack<T>();
		while(true) {
			T temp;
			temp = a.pop();
			if(temp==null)
				break;
			else
				a.push(temp);
		}
		return a;
	}
	public static void main(String []args) {
		GStack<Integer> st = new GStack<Integer>();
		
		for(int i=1;i<=4;i++)
			st.push(i);
		
		st = reverse(st);
		for(int i=0;i<4;i++) {
			System.out.println(st.pop());
		}
		
	}
}

 

 

실행결과:

1

2

3

4

 

 

# 제네릭의 장점

- 컴파일 시에 타입이 결정되어 보다 안전한 프로그래밍 가능

- 런타임 타입 충돌 문제 방지

- ClassCastException 방지

댓글