У меня почти избыточные java-методы. Тело этих методов всегда одно и то же. Только одно или два выражения java (строки java-кода) различаются. Я хочу сделать рефакторинг кода этих почти избыточных методов, но я ищу лучший способ сделать это. Это не так просто, из-за динамических строк кода.Как работать с динамическим кодом в java-методе?
Вот три метода с тем же телом, но с dynmamic кода 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;
}
Итак, как можно написать один метод с возможностью задания динамических строк кода?
Какая часть нашего кода на самом деле должно быть «динамический»? Невозможно сделать 'if (false == true)' dynamic. Единственное, что вы можете сделать, это сделать условие в динамическом выражении if. Но в последнем экзамене есть две динамические строки 'System.out.println (« test »); if ("test" .equals ("test")), и это не сработает вообще. – martinhh
Я изменил свой код, чтобы сделать его более понятным, что я имею в виду. – Martin