堆栈 - 未经检查/不安全的操作

时间:2014-01-16 09:04:46

标签: java stack compiler-warnings

所以我想在这里运行这个简单的程序:

import java.util.*;

class StackDemo
{
    public static void main(String[] args) {
        Stack s = new Stack();
        s.push(5);
        s.push("dog");
        System.out.print(s);
    }
}

StackDemo.java使用未经检查或不安全的操作。 注意:有关详细信息,请重新编译-Xlint:unchecked。 流程已完成。

它显示预期结果,即"[5, dog]",但我不明白Build Output窗口中的那条消息。 这可能有什么问题?

2 个答案:

答案 0 :(得分:5)

Stack是一个泛型类,如果您愿意,可以使用它来存储特定类型的对象(例如,Stack<String>将用于存储字符串)。使用没有类型说明符的裸类通常被认为是一种不好的做法,因为你正在失去集合的类型安全性。

如果确实存在一个用例,您希望将5"dog"存储在堆栈中,则应该在堆栈中定义两者之间的最大公分母 - {{1} }:

Object

答案 1 :(得分:2)

Stack是遗留类,但警告是因为你没有使用泛型,编译器无法检查你是否添加了正确的类型。

鉴于你已经混合了类型,在一个真实的程序中我希望这是错误。