You need to enable JavaScript to run this app. Java自定义Stack类报type Stack does not take parameters错误
优惠活动
大模型
产品
解决方案
定价
更多

Java自定义Stack类报type Stack does not take parameters错误

代码问题全量排查

触发当前报错的核心原因

你在代码顶层自定义了一个名为Stack的空类,这个类是没有声明任何泛型形参的普通类,根本不支持接收类型参数。
因为这个类的名字和JDK内置的java.util.Stack完全重名,编译器在解析Stack<Integer>的写法时,会优先匹配你自己定义的这个同名类。但这个自定义类没有泛型能力,因此直接抛出type Stack does not take parameters的错误。

其余会导致程序运行失败的隐藏问题

就算解决了泛型匹配的报错,当前代码还有两个会直接导致程序异常的硬伤:

  • 自定义的空Stack类完全没有实现push()、pop()、isEmpty()方法,就算把所有泛型参数的写法删掉,编译时也会提示找不到对应方法。
  • 循环语句后手滑多写了分号:while (!stack.isEmpty()); 这个多余的分号会让while循环变成没有实际执行逻辑的空语句,程序会直接在这里进入死循环,后续弹栈、拼接结果的代码根本不会被纳入循环体执行。
修正方案

任选一种即可:

  1. 直接删掉你写的空Stack类,在类定义前导入JDK内置的栈实现:import java.util.Stack;。此时你调用的就是原生支持泛型的官方栈类,泛型匹配的报错会直接消失。
  2. 如果你确实要手写栈的实现逻辑,就需要给自定义的Stack类加上泛型声明,补全对应的栈操作方法,比如改成class Stack<T> { // 内部实现push/pop/isEmpty的具体逻辑 },改造后的类才支持传入Integer这类类型参数。

*注意:不管选哪种修正方案,都必须删掉while (!stack.isEmpty()); 后面的多余分号,否则程序依然会卡死在空循环里。

内容的提问来源于stack exchange,提问作者tanjiro nezuko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 08:15:04