class MyStack {

    Object stack[] = new Object[10];
    int top=0;
    
    public void push(Object d){
        stack[top++] = d;
    }

    public Object pop(){
        return stack[--top];
    }
}

public class Stackmain {
    public static void main(String[] args){
        MyStack s = new MyStack();
        s.push(3.0); s.push(3.0);
        System.out.println(s.pop());
        System.out.println(s.pop());
    }
}

간단하게 스택을 오브젝트로 구현한건데

여기서 제네릭으로 바꾸려면

class MyStack<T> {

    T stack[] = new T[10];
    int top=0;
   
    public void push(T d){
        stack[top++] = d;
    }

    public T pop(){
        return stack[--top];
    }
}

public class Stackmain {
    public static void main(String[] args){
        MyStack<Integer> s = new MyStack<Integer>();
        s.push(3.0); s.push(3.0);
        System.out.println(s.pop());
        System.out.println(s.pop());
    }
}

이렇게 하는거 아니야?

근데 이렇게 하니까 MyStack 클래스 배열선언부분이 잘못됬대

generic 쓸땐 배열선언어떻게하는거지?