java - Java立即调用我在数组中初始化的方法
问题描述
这是示例代码或我尝试初始化的方法:
WebDriver launch_browser1()
{
// initialize driver stuff
return driver;
}
WebDriver launch_browser2()
{
// initialize driver stuff
return driver;
}
这是我的初始化代码
WebDriver test_browsers [] = {launch_browser1(), launch_browser2()};
当我点击运行时,它会立即调用我初始化的浏览器
我目前的解决方法是
public static String test_browsers[] = {"browser1", "browser2"};
for (int i = 0; i < test_browsers.length; i++)
{
if (i == 0)
{
driver = launch_browser1();
}
else if (i == 1)
{
driver = launch_browser2();
}
}
我的目标是一次启动一个浏览器。解决方法工作得很好,但我需要帮助优化我当前的代码。我不确定我在哪里初始化出错了,但任何帮助将不胜感激
解决方案
供应商
Supplier
使用Java 中的cab 可以解决此问题
- 创建供应商并将实际的对象创建包装在供应商内部
Supplier.get()
将调用 lambda
import java.util.function.Supplier;
public class SupplierTest {
public static class WebDriver {
public WebDriver() {
System.out.println("Initialized");
}
public void print() {
System.out.println("Running " + System.currentTimeMillis());
}
}
static WebDriver launch_browser1() {
// initialize driver stuff
return new WebDriver();
}
static WebDriver launch_browser2() {
// initialize driver stuff
return new WebDriver();
}
public static void main(String[] args) {
Supplier<WebDriver> test_browsers [] = new Supplier[]{ () -> launch_browser1(), () -> launch_browser2()};
for (Supplier<WebDriver> a : test_browsers) {
System.out.println("Inside for loop");
a.get().print();
}
}
}