1

我有以下接口声明:

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

4 回答 4

1

它无法编译,因为方法名称不同(检查 S/someMethod 上的大写)

于 2009-11-08T16:04:44.620 回答
1

大小写在 Java 中很重要。你的界面说someMethod,你的班级说SomeMethod

于 2009-11-08T16:05:26.827 回答
0

其中一种方法保护是公共的,另一种是默认的,这就是您的代码无法编译的原因。将两者设为公开或默认。

于 2012-12-20T16:29:36.750 回答
0

为什么你的接口方法会抛出异常?这几乎总是错误的。异常只是其余扩展的基本类型;它不应该以这种方式使用。

于 2009-11-08T16:29:52.673 回答