Java Webdriver界面是否可以是静态的(有关问题,请参阅说明)?

Java Webdriver界面是否可以是静态的(有关问题,请参阅说明)?,java,selenium,Java,Selenium,在编写selenium代码时,我看到了一条语句:- public static WebDriver driver=新的Firefox驱动程序() 现在我有多个问题:- WebDriver是一个接口。接口可以是静态的吗?如果是,根据我的理解,此接口的所有方法部分也将是静态方法 根据我对静态类/方法/变量的理解,任何对象都不应该被定义为静态的,不能被实例化。但是从上面的程序语句来看,我们似乎正在创建WebDriver类的一个新对象,尽管它是静态的。请澄清这是如何可能的,或者我的理解是否存在偏差 首先

在编写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();