Java Webdriver界面是否可以是静态的(有关问题,请参阅说明)?
在编写selenium代码时,我看到了一条语句:- public static WebDriver driver=新的Firefox驱动程序() 现在我有多个问题:-Java Webdriver界面是否可以是静态的(有关问题,请参阅说明)?,java,selenium,Java,Selenium,在编写selenium代码时,我看到了一条语句:- public static WebDriver driver=新的Firefox驱动程序() 现在我有多个问题:- WebDriver是一个接口。接口可以是静态的吗?如果是,根据我的理解,此接口的所有方法部分也将是静态方法 根据我对静态类/方法/变量的理解,任何对象都不应该被定义为静态的,不能被实例化。但是从上面的程序语句来看,我们似乎正在创建WebDriver类的一个新对象,尽管它是静态的。请澄清这是如何可能的,或者我的理解是否存在偏差 首先
首先,你对什么是静态的理解是错误的。在
publicstaticwebdriver=newfirefoxdriver()中
,WebDriver
是对象的类型,driver
是对象的实例。当您将成员声明为静态时,它引用的是其实例,而不是其类型。因此,您不是“使”WebDriver成为静态的,而是使驱动程序成为静态的
因此,“接口可以是静态的吗?”这个问题根本不适用于您的情况。但如果您关心它,答案是肯定的,您可以像这样定义接口,并且它对于父类是静态的:
public class WithStaticInterface
{
public static interface MyInterface
{
void hello();
}
}
但是,接口的成员
我建议阅读更多关于静态成员的含义。例如:
有时,您希望拥有对所有对象通用的变量。这是通过“静态”修改器完成的。声明中包含静态修饰符的字段称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。类的每个实例都共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量
- 对于#2:
上面的语句不是创建Webdriver接口的对象,而是创建FirefoxDriver类的对象。FirefoxDriver是一个继承或实现接口WebDriver的类。感谢您的回复。事情现在已经很清楚了。谢谢你消除了困惑。
public static WebDriver driver = new Firefox Driver();