【发布时间】:2016-11-13 19:35:06
【问题描述】:
如何创建一个在 Overridden 时可以有不同类型的接口?有时我希望该方法接受“HtmlPage”类型的项目,而其他时候我希望它采用“文档”类型。稍后这些可能会更改为更多类型。
示例:
public interface MyInterface{
void checkThis() throws Exception;
Output Show(Input input, String url) throws Exception;
}
public class HeadLevel extends MyInterface<HtmlPage,String>{
Output scrape(HtmlPage page, String url) throws Exception;
}
public class MyClass implements HeadLevel<Output>{
@Override
public void checkThis(Document page, String url){
}
}
我认为这样的事情应该是可以实现的。我尝试在搜索中使用关键字“Overload”和“Override”四处寻找,但找不到可以像这样工作的东西。如您所见,“MyClass”已覆盖该方法并已定义正在使用的参数。
【问题讨论】:
-
首先你的语法是错误的。其次Class可以扩展另一个类而不是接口,而Class实际上实现了接口。
-
和我的项目大体相似。
-
这在技术上是不可能的,因为
checkThis(Document, String)不会也不能覆盖checkThis()。但是,如果您告诉我们您想通过此方法完成什么,我们或许能够找到解决方法。 -
正如@Zircon 提到的,在更改参数时不可能“覆盖”方法(因为它们是方法签名的一部分;请注意,在 Java 语言中,返回值不是签名,但是在 JVM 中是这样)。这闻起来像 XY-problem,所以请描述您想要实现的目标,而不是展示您的方法。
标签: java parameters overloading overriding