未实现Selenium库WebDriverListener接口全部方法却无报错,原因何在?
为什么实现WebDriverListener接口未实现全部方法却无报错?
这是因为从Selenium 4.0版本开始,WebDriverListener接口里的大部分方法都被定义为Java默认方法(default method),这类方法允许接口自带默认实现逻辑(通常是空实现)。
当你实现带有默认方法的接口时,Java编译器不会强制要求重写所有方法——你只需要实现自己需要的方法即可,剩下的方法会自动继承接口中的默认实现。
看你提供的代码:
public class SeleniumListeners implements WebDriverListener{ public void afterChangeValueOf(WebElement arg0, WebDriver arg1) { System.out.println("In afterChangeValueOf"); } }
你只重写了afterChangeValueOf方法,其他未重写的方法都会使用WebDriverListener接口中定义的默认实现,因此编译器不会抛出“未实现全部接口方法”的错误。
如果是Selenium 3.x及更早版本,WebDriverListener还不是带默认方法的接口,那时候实现类必须重写所有方法,否则会触发编译报错。
内容的提问来源于stack exchange,提问作者Madhavan Theia
相关产品推荐
相关产品推荐

