WebDriver driver=new FirefoxDriver() 这个是编译时绑定还是运行时绑定?

WebDriver driver=new FirefoxDriver() is this compile-time or runtime binding?

看来我的核心 Java 概念有点混乱。请看下面。

    class A{
       public void func1()
       {
           System.out.println("Hello A");
       }
    }
    class B extends A{
       public void func1(){
           System.out.println("Hello B");
       }
     }
   class C {
        public static void main( String args[]) {

           A myobj = new B();
           myobj.func1();
       }
}

正如我们所知,Webdriver 是一个接口,而 FirefoxDriver 是 Webdriver 的实现 class,所以根据上面的例子,假设声明是正确的:WebDriver driver=new FirefoxDriver() 是一个迟到的例子绑定。

WebDriver driver=new FirefoxDriver() is this compile-time or runtime binding?

这是对名为 FirefoxDriver 的 class 的编译时绑定。它将使用 class 路径中的任何 FirefoxDriver class。这与 Java 得到的编译时差不多,因为 Java 在编译时和运行时从 class 路径工作。

下面是一个运行时绑定的例子:

String driverName = /*...get the name from somewhere, like a properties file...*/;
WebDriver driver = Class.forName(driverName).newInstance();