我有以下接口声明:
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:
对不起所有 - 我的巨大错误。写这个例子迫使我删除代码。我没有注意到错误在其他地方,而不是签名。
这是运行时编译和自定义类加载的“神奇”......
答案 0 :(得分:1)
它没有编译,因为方法名称不相同(检查S / someMethod上的大写字母)
答案 1 :(得分:1)
案例在Java中很重要。您的界面显示someMethod
,您的班级显示SomeMethod
。
答案 2 :(得分:0)
为什么你的接口方法会抛出异常?这几乎总是错的。例外是其余部分延伸的基本类型;它并不意味着以这种方式使用。
答案 3 :(得分:0)
保护方法之一是公共方法,另一方法是默认方法,这就是您的代码无法编译的原因。公开或默认。