什么时候使用Stack <Integer> st = new Stack <Integer>;什么时候使用堆栈st = new Stack;?

问题描述

在Java中,什么时候使用

Stack<Integer> st = new Stack<Integer>();

以及何时使用

Stack st  = new Stack();

对于Stack st = new Stack(),我将不得不创建自己的类Stack,除了它们之间是否还有其他特定区别?

解决方法

何时使用Stack st = new Stack();

从不。这种样式早于Java中泛型的存在。它已完全替换为通用用法,即Stack<Integer>。有时您需要使用后期绑定,并且不知道哪种类型将存储在堆栈中。但是即使那样,您仍然应该使用通配符,例如Stack<?>

如果您使用通用类而不指定通用参数,则现代IDE会警告您。

我将必须创建自己的课程Stack

您不能,您可以非通用地使用通用的Stack类(即java.util.Stack<T>)。 Java允许(对于 any 泛型类,而不仅限于Stack)。但是不鼓励,请参见上文。