我是一个Java新手。你能解释下面两段代码之间的区别吗?
第1部分:
Set<String> b = new LinkedHashSet<String>();
b = webDriver.getWindowHandles();
第2部分:
Set<String> b = webDriver.getWindowHandles()
我的问题不在于使用set或selenium / webdriver。我基本上想要了解两个声明之间的OOP概念差异。
答案 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