ジャワ国新遊記の十八----汎型桟類

5986 ワード

import java.lang.reflect.Array;

/**
 *  
 *
 * @param <T>
 */
public class Stack<T>{
    private Class<T> type;//  
    private int size;//  
    private T[] arr;//  
    private int top;//  
    
    public Stack(Class<T> type,int size){
        this.type = type;
        this.size=size;
        arr=createArray(size);
        top=-1;
    }
    
    /**
     *  
     * @param size
     * @return
     */
    @SuppressWarnings("unchecked")    
    private T[] createArray(int size) {    
        return (T[]) Array.newInstance(type, size);    
    }
    
    /**
     *  
     * @param t
     */
    public void push(T t){
        top++;
        arr[top]=t;
    }
    
    /**
     *  
     * @return
     */
    public T pop(){
        T t=arr[top];
        top--;
        return t;
    }
    
    /**
     *  
     * @return
     */
    public T peek(){
        return arr[top];
    }
    
    /**
     *  
     * @return
     */
    public boolean isEmpty(){
        return top==-1;
    }
    
    /**
     *  
     * @return
     */
    public boolean isFull(){
        return top==(size-1);
    }
    
    
    public static void main(String[] args){
        Stack<String> s=new Stack<String>(String.class,100);
        s.push(" ");
        s.push(" ");
        s.push(" ");
        s.push(" ");
        
        while(!s.isEmpty()){
            String str=s.pop();
            System.out.println(str);
        }
        
    }
}

出力: