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 방지
'Language > JAVA' 카테고리의 다른 글
[JAVA] 코테 스터디 코드 리뷰 중 배운 최적화 기법1 (0) | 2022.12.05 |
---|---|
[JAVA] 입출력 스트림 / 파일스트림 (0) | 2021.02.15 |
댓글