堆栈 - 未检查/不安全的操作(Stack - unchecked/unsafe operation

2019-10-19 05:13发布

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

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]" ,但我不明白的生成输出窗口上的消息。 怎么可能是错在这里?

Answer 1:

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

如果的确有一个用例,你想同时存储5"dog"中的筹码,你应该定义两者之间的最大公约数你的筹码- Object

Stack<Object> s = new Stack<>();


Answer 2:

栈是传统类,但该警告是因为你还没有使用泛型和编译器不能检查您是否已经添加了合适的类型或没有。

鉴于你有混合类型,在一个真正的程序我希望这是错误。



文章来源: Stack - unchecked/unsafe operations