Sco*_*ott 6 java parameters static pass-by-reference pass-by-value
在查看Selenium源代码时,我在PageFactory中注意到以下内容:
public static <T> T initElements(WebDriver driver, Class<T> pageClassToProxy) {
T page = instantiatePage(driver, pageClassToProxy);
initElements(driver, page);
return page;
}
public static void initElements(WebDriver driver, Object page) {
final WebDriver driverRef = driver;
initElements(new DefaultElementLocatorFactory(driverRef), page);
}
Run Code Online (Sandbox Code Playgroud)
拥有以下产品线有什么好处?
final WebDriver driverRef = driver;
Run Code Online (Sandbox Code Playgroud)
将参数设置为final,然后将其传递给下一个方法而不声明新引用是不是有意义?
答案是,设置final变量并仅将其用作函数的参数是完全没有用的。在DefaultElementLocatorFactory构造函数中,与输入参数相关的变量可以自由地重新分配,因为它是原始引用的副本。
PS ...当然,除非按照OP的建议,输入参数被声明final。
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |