作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几乎多余的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/
我是一名优秀的程序员,十分优秀!