什么是“静态”,以及在哪里使用它?

时间:2014-03-04 02:36:20

标签: java static

我是Selenium的新手。

我正在编写一段代码DriverManager.Java(加载浏览器)

package com.moni.tef;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class DriverManager {

    private static WebDriver driver;

    static {
        driver = new FirefoxDriver();
    }
    public WebDriver getWebDriver(){
        driver.get("https://public-testing/");
        return driver;
    }
}

我创建了另一个类..并尝试使用这个getWebDriver方法..然后我的代码片段变为public static。代码正在运行,但任何人都可以解释这个修复是什么(由eclipse完成)

public static WebDriver getWebDriver(){
    driver.get("https://xxx.url.url");
    return driver;
}

2 个答案:

答案 0 :(得分:1)

IMO,在您新写的课程中,您尝试静态调用getWebDriver()方法:

DriverManager.getWebDriver()

而不是首先创建DriverManager的实例:

new DriverManager().getWebDriver()

这会导致编译错误,因为最初,DriverManager#getWebDriver()是实例方法,而不是类方法(从而静态 )。

因此,Eclipse可能通过制作方法static来帮助您(确保您的渐进式认可),以便成功编译。

有关static概念的更多信息:点击here

答案 1 :(得分:0)

静态成员对于类的所有实例都是通用的。非静态成员特定于类(对象)的实例。静态方法和成员(字段,属性)用于在程序或API的生命周期内不需要更改的情况。这方面的一个例子是Math.PI.一种更常见(正确)的描述方式是:Static methods and fields are useful when they conceptually don't belong to an instance of something.

静态成员还具有可从任何位置访问的属性(除非在没有公开的情况下声明),而没有类的实例(对象)。

当JVM加载类时,类的特殊static {}块为run only once