所以我想在这里运行这个简单的程序:
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窗口中的那条消息。
这可能有什么问题?
答案 0 :(得分:5)
Stack
是一个泛型类,如果您愿意,可以使用它来存储特定类型的对象(例如,Stack<String>
将用于存储字符串)。使用没有类型说明符的裸类通常被认为是一种不好的做法,因为你正在失去集合的类型安全性。
如果确实存在一个用例,您希望将5
和"dog"
存储在堆栈中,则应该在堆栈中定义两者之间的最大公分母 - {{1} }:
Object
答案 1 :(得分:2)
Stack是遗留类,但警告是因为你没有使用泛型,编译器无法检查你是否添加了正确的类型。
鉴于你已经混合了类型,在一个真实的程序中我希望这是错误。