重新申请参数

时间:2012-06-11 16:08:57

标签: 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);
}

拥有以下一行有什么好处?

final WebDriver driverRef = driver;

将参数设为final,然后将其传递给下一个方法而不声明新引用是不是有意义?

2 个答案:

答案 0 :(得分:3)

嗯,答案是在变量上设置final并仅将其用作函数的参数完全没用。在DefaultElementLocatorFactory构造函数中,可以自由地重新分配与input参数相关的变量,因为它是原始引用的副本。

P.S。 ...当然,除非OP建议,否则输入参数将被声明为final

答案 1 :(得分:2)

我能想出的最好的事情(假设selene开发人员对java的工作原理不仅仅有一个基本的理解 - 我认为这是给出的):

大概在有DefaultElementLocatorFactory类之前,该方法使用匿名内部函数,当代码被重构时,某些部分被忽略了。