0

スロー可能なオブジェクトでgetCause()メソッドをオーバーロードするにはどうすればよいでしょうか。私は次のものを持っていますが、文字列でオーバーロードできないと言っているので、機能していないようです。

public class MyException extends RuntimeException   {
String cause;
MyException(String s)   {
    cause = s;
}
@Overwrite public String getCause()    {
    return cause;
}
4

2 に答える 2

2

戻り値の型だけが異なる 2 つのメソッドを持つことは違法です。誰かが書いたとします:

Object obj = myException.getCause();

これは完全に正当なJavaであり、コンパイラはそれがバージョンなのStringかバージョンなのかを判断する方法がありませんThrowable

同様に、これも完全に合法であるため、スーパークラスの署名を置き換えることはできません。

Throwable t = new MyException();
Throwable t0 = t.getCause();
//Returns String?!?!?!?
于 2013-03-04T19:55:34.293 に答える