0

我只是在 Java 中为 EmptyStackException 添加了一个扩展来显示错误消息。我已将此文件放在同一个包下,但出现错误:

"The constructor EmptyStackException(String) is undefined"

EmptyStackException.java:

package mypackage;

public class EmptyStackException extends RuntimeException{
  private static final long serialVersionUID = 1L;
  public EmptyStackException(String message){
      super(message);
   }
}

应该是很简单的事情。但是我卡住了!任何帮助表示赞赏。

4

2 回答 2

3

您已经定义了自己的EmptyStackException,但 Java 提供了java.util.EmptyStackException它唯一的构造函数不带任何参数,这意味着您认为使用自己的代码EmptyStackException实际上正在使用java.util.EmptyStackException

要扩展EmptyStackException,请定义您自己的:

public MyEmptyStackExceptionWithMessage extends EmptyStackException {

在构造函数中,调用super()并存储您自己的消息。

于 2013-10-15T22:14:54.957 回答
1

看起来您正在尝试EmptyStackException用您自己的课程替换现有课程;这总是一个非常糟糕的主意(在许多 Java 环境中,这是不可能的。)可能会出现编译错误,因为尽管您正在尝试构造类的实例,但 Java 编译器实际上正在尝试实例化java.util.EmptyStackException确实没有单参数构造函数。基本上,如果您需要定义自己的异常类型,请选择平台类尚未使用的名称——您将避免很多麻烦。如果您的目标是真正替换 Java API 类:放弃。这不会发生。

于 2013-10-15T22:16:57.287 回答