心法领悟183:不用泛型的问题。

  1. 为了获取适当的值,必须进行强制类型转换。因为在保存数据时使用了Object类型的数组,丢失了对象的实际类型。
  2. 第二,没有进行错误检查。这意味着可以向该栈中存入任何类型的对象,如InputStream等。当转换成String时会在系统运行时报错。
package com.mingrisoft.generic;

public class Stack {
    private Object[] container = new Object[10];
    private int index = 0;
    
    public void push(Object o) {
        if (index != container.length) {
            container[index++] = o;
        }
    }
    
    public Object pop() {
        if (index != -1) {
            return container[--index];
        }
        return null;
    }
    
    public boolean empty() {
        if (index == 0) {
            return true;
        } else {
            return false;
        }
    }
}

 

package com.mingrisoft.generic;

public class StackTest {
    public static void main(String[] args) {
        Stack stack = new Stack();
        System.out.println("向栈中增加字符串:");
        System.out.println("视频学Java");
        System.out.println("细说Java");
        System.out.println("Java从入门到精通(第2版)");
        stack.push("视频学Java");
        stack.push("细说Java");
        stack.push("Java从入门到精通(第2版)");
        System.out.println("从栈中取出字符串:");
        while (!stack.empty()) {
            System.out.println((String) stack.pop());
        }
    }
}

 运行结果:

向栈中增加字符串:
视频学Java
细说Java
Java从入门到精通(第2版)
从栈中取出字符串:
Java从入门到精通(第2版)
细说Java
视频学Java