Java中带类型参数的堆栈
我正试图让一个堆栈在接近最新Java(Java13)的环境下工作 比如:Java中带类型参数的堆栈,java,generics,stack,Java,Generics,Stack,我正试图让一个堆栈在接近最新Java(Java13)的环境下工作 比如: Stack<String> stack = new Stack<String>(); Stack Stack=新堆栈(); 我收到的错误消息是 类型堆栈不接受参数 然而,我在网上看到的所有示例都带有参数 我应该如何构建(非基本)堆栈 =====++========= 增编: 因此,我通过导入以下内容使其工作正常: 导入java.util.Stack 这很奇怪,因为我已经有了一个要点: 导入j
Stack<String> stack = new Stack<String>();
Stack Stack=新堆栈();
我收到的错误消息是
类型堆栈不接受参数
然而,我在网上看到的所有示例都带有参数
我应该如何构建(非基本)堆栈
=====++=========
增编:
因此,我通过导入以下内容使其工作正常:
导入java.util.Stack
这很奇怪,因为我已经有了一个要点:
导入java.util.*
不管怎样,我不会再费心去想它了,因为它现在可以工作了。我不会在图书馆里瞎混,因为无论你在做什么,通常都需要一些专门的需求。制作一个专门做您想要做的事情的堆栈要好得多,而不是试图敲打一个库以使其成为有用的形状。下面是Java中堆栈的典型实现。它当前设置为保持整数,但是如果我想保持字符串,那么我只需要调整它
public class Utility_Stack {
final static int DEFAULT_Capacity = 1000;
int capacity = 1000;
int xTop = 0;
String[] aString;
int[] aInt;
double[] aDouble;
private Utility_Stack(){}
public static Utility_Stack create(){
Utility_Stack stack = new Utility_Stack();
stack.aInt = new int[ DEFAULT_Capacity ];
return stack;
}
public void push( int item ){
xTop++;
if( xTop >= capacity ){
int iNewCapacity = capacity * 7 / 5;
int[] new_stack = new int[ iNewCapacity + 1 ];
System.arraycopy( aInt, 0, new_stack, 0, aInt.length );
aInt = new_stack;
capacity = iNewCapacity;
}
aInt[ xTop ] = item;
}
public int peek(){ return aInt[ xTop ]; }
public int pop(){
int top = aInt[ xTop ];
aInt[ xTop ] = Integer.MIN_VALUE;
if( xTop > 0 ) xTop--;
return top;
}
public void reset(){ xTop = 0; }
public boolean isEmpty(){ return xTop == 0; }
}
那是你的密码吗?或者您正在做类似于
…=新堆栈(someObject)代码>首先,堆栈是库类还是您自己的代码?另外,由于Java7,您不必在构造函数中指定泛型参数,因为它们可以被推断出来。我不知道Java13有多好,但是如果泛型参数的使用不仅仅是无用的,而且在这个版本中也是被禁止的呢?无论如何,我会尝试使用newstack()
instead1)确保您导入的是其他堆栈实现,而不是其他堆栈实现,并且您没有创建自己的名为Stack
的类2) Stack
的javadoc建议您改用Deque
/ArrayDeque
(“Deque接口及其实现应优先于Stack使用”)。请提供一个我们可以复制/粘贴并获得与您询问的相同错误的。java 13 for Stack确认它在现代java中仍然是一个参数化类。这是假设我们使用的是java.util.Stack,而不是其他任意实现。你说的“玩弄库”是什么意思?您是否建议我们避免修改标准JavaAPI类?或者,您是在建议我们避免使用标准Java API中的类,而是编写自己的类?考虑到非标准命名约定、不正确的大小写、非私有变量、缺少参数化类型、变量名不明确等因素,这看起来不像任何“典型”Java实现。