Вы можете передать предикат своему методу:
public static void pressKeyUntilCondition(Keys key, Predicate<Integer> condition) {
while(condition.test(timesPressed)) {
press(key);
timesPressed++;
}
}
И условие, которое вы передаете, может быть, например:
Predicate<Integer> predicate = integer -> integer == 3;
И если вам нужно больше "условий дляЧтобы оценить, вы можете создать некоторый класс модели, который содержит эти два поля и создать предикат из него:
public class ConditionValues {
private int timesPressed;
private Keys key;
//getters setters
}
Predicate<ConditionValues> predicate = values -> values.getMaxTimePressed() == 3 && values.getKey() == Keys.DOWN;
public static void pressKeyUntilCondition(Keys key, Predicate<ConditionValues> condition) {
ConditionValues conditionValues = new ConditionValues(Keys.DOWN, 0);
while(condition.test(conditionValues)) {
press(key);
timesPressed++;
conditionValues.setTimesPressed(timesPressed);
}
Конечно, это просто POC, так что вы можете вносить любые корректировки по своему желанию, например, передавая желаемый ключ какпараметр.