java中下面的对象声明之间的区别

时间:2014-09-08 11:53:14

标签: java

我是一个Java新手。你能解释下面两段代码之间的区别吗?

第1部分:

Set<String> b = new LinkedHashSet<String>();
b = webDriver.getWindowHandles();

第2部分:

Set<String> b =  webDriver.getWindowHandles()

我的问题不在于使用set或selenium / webdriver。我基本上想要了解两个声明之间的OOP概念差异。

5 个答案:

答案 0 :(得分:0)

第一个创建一个新的LinkedHashSet,当b被分配了对webDriver.getWidnowHandles的调用结果时,它会被丢弃,所以它没用。

第二个是正确的。

或者如果你因某种原因需要在外面声明b(例如,你将其分配到if中,如下所示)你可以写:

Set<String> b = null;
if (xxxxx) {
  b = webDriver.getWindowHandles();
} else {
  b = // something else
}

这不是关于OOP,而是关于“new”运算符的作用以及java如何管理引用。

答案 1 :(得分:0)

首先是没用的,因为定义中b的值会被webDriver.getWindowHandles()直接覆盖。

答案 2 :(得分:0)

在第一种情况下,您正在创建一个新的LinkedHashSet对象,然后立即将其替换为另一个。没有理由这样做。它会降低您的代码的可读性并损害性能。

答案 3 :(得分:0)

Set b = new LinkedHashSet(); b= webDriver.getWindowHandles();

在上面的代码中,您首先创建一个LinkedHashset对象,而第二个语句就是返回一个新的LinkedHashSet,所以在这种情况下,第一个LinkedHashset对象没有用,也没有必要创建。

Set b = webDriver.getWindowHandles()

虽然在此语句中只创建了一个链接的哈希集。

所以第二个更适合使用。

答案 4 :(得分:0)

getWindowHandles()它返回一组窗口句柄,可用于迭代此WebDriver实例的所有打开窗口

Set<String> b = new LinkedHashSet<String>();
b= webDriver.getWindowHandles();  // This will invalidate the first assignment

Set<String> b =  webDriver.getWindowHandles() // This will prevent the unnecessary thing that you tried earlier