gpt4 book ai didi

java - 如何在java方法中使用动态代码?

转载 作者:行者123 更新时间:2023-12-03 01:10:43 25 4
gpt4 key购买 nike

我有几乎多余的java方法。这些方法的主体始终相同。只有一两个java表达式(java代码行)不同。我想对这些几乎冗余的方法进行代码重构,但我正在寻找实现此目的的最佳方法。由于动态代码行,这并不容易。

以下是具有相同主体但包含动态 Java 代码的三个方法:

public static final boolean doSomething1() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);

while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 1
for (WebElement element : list) {
if (element.isDisplayed()) {
element.click();
return true;
}
}
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}

return false;
}

public static final boolean doSomething2() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);

while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 2
for (WebElement webElement : webElementList) {
WebElement parent = getParentElement(webElement);
}
return true;
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}

return false;
}

public static final boolean doSomething3() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);

while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 3
for (WebElement element : list) {
if (element.isDisplayed() && element.getText().equalsIgnoreCase(size))
return true;
}
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}

return false;
}

那么,如何编写一种可以设置动态代码行的方法呢?

最佳答案

您可以使用Strategy Pattern .

使用 BooleanSupplier 的示例作为策略:

private static boolean doSomethingHelper(BooleanSupplier checker) { 
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);

while (currentTime < maxTime) {
try {
if (checker.getAsBoolean())
return true;
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}

return false;
}

public static boolean doSomething1() {
return doSomethingHelper(() -> true);
}

public static boolean doSomething2() {
return doSomethingHelper(() -> false);
}

public static boolean doSomething3() {
return doSomethingHelper(() -> {
System.out.println("test");
return true;
});
}

关于java - 如何在java方法中使用动态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38695161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com