方法签名声明为throws Exception;实现为抛出Exception的子类

时间:2009-11-08 15:59:00

标签: java exception implementation method-signature

我有以下接口声明:

public interface SomeInterface {

    void someMethod() throws Exception;

}

我使用第三方来生成此类的实现(JavaCC - 用于好奇)

生成的类看起来像这样天真:

public class SomeClass implements SomeInterface {

   public void someMethod() throws SomeException {

    // Does something

   }
}

SomeException当然是Exception的子类。

(不)令人惊讶的是代码无法编译。

有没有人对此有任何意见?

谢谢!

修改

将方法SomeMethod()重命名为someMethod()

这是我的一个错字...(对不起)

编辑#2:

对不起所有 - 我的巨大错误。写这个例子迫使我删除代码。我没有注意到错误在其他地方,而不是签名。

这是运行时编译和自定义类加载的“神奇”......

4 个答案:

答案 0 :(得分:1)

它没有编译,因为方法名称不相同(检查S / someMethod上的大写字母)

答案 1 :(得分:1)

案例在Java中很重要。您的界面显示someMethod,您的班级显示SomeMethod

答案 2 :(得分:0)

为什么你的接口方法会抛出异常?这几乎总是错的。例外是其余部分延伸的基本类型;它并不意味着以这种方式使用。

答案 3 :(得分:0)

保护方法之一是公共方法,另一方法是默认方法,这就是您的代码无法编译的原因。公开或默认。