2013-10-15 109 views
0

我只是在Java中的EmptyStackException中添加了一个扩展来显示错误消息。我已经把相同的包下这个文件,但我得到的错误:Java中的RuntimeException扩展

"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); 
    } 
} 

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

+1

你可以显示整个代码,显示你创建你的类的'object'吗? – Prateek

+1

你能发布实际上给你的问题吗?即您调用此构造函数的位置 – yamafontes

回答

3

你自己定义EmptyStackException,但Java提供java.util.EmptyStackExceptionits only constructor takes no arguments,这意味着你的代码,你想用自己的实际EmptyStackException使用java.util.EmptyStackException

为了延长EmptyStackException,定义自己:

public MyEmptyStackExceptionWithMessage extends EmptyStackException { 

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

+1

或者使用类的完全限定名称(包括包名称)。即'mypackage.EmptyStackException' –

+0

@ Dgrin91真的,这是可能的,但OP正在尝试一个“扩展”。我认为OP正试图扩展'EmptyStackException',而不是定义另一个。 – rgettman

+0

@rgettman:谢谢,但那也行不通!我得到相同的错误消息超级(味精) –

1

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