Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中带类型参数的堆栈_Java_Generics_Stack - Fatal编程技术网

Java中带类型参数的堆栈

Java中带类型参数的堆栈,java,generics,stack,Java,Generics,Stack,我正试图让一个堆栈在接近最新Java(Java13)的环境下工作 比如: Stack<String> stack = new Stack<String>(); Stack Stack=新堆栈(); 我收到的错误消息是 类型堆栈不接受参数 然而,我在网上看到的所有示例都带有参数 我应该如何构建(非基本)堆栈 =====++========= 增编: 因此,我通过导入以下内容使其工作正常: 导入java.util.Stack 这很奇怪,因为我已经有了一个要点: 导入j

我正试图让一个堆栈在接近最新Java(Java13)的环境下工作

比如:

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实现。