2013-10-15 84 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類:放棄。這不會發生。