Ссылки на метод Java, которые принимают разное количество символов? - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь применить логику повтора ко многим методам.Например, у меня есть method1 (String) и method2 (int, String), которые я хотел бы повторить до определенного количества раз.

В идеале мне бы хотелось:

int count = 0;
while (count < MAX_TRIES) {
    try { 
        //run method
    } catch (Exception e) {
        //increment count
        //throw e if count == MAX_TRIES
    }
}

внутри метода, где я мог бы передать в качестве параметра method1 или method2.Есть какой-либо способ сделать это?Спасибо!

1 Ответ

0 голосов
/ 29 сентября 2018

Конечно:

public <T> T retry(Callable<T> callable) throws Exception {
    int count = 0;
    while (true) {
        try { 
            return callable.call();
        } catch (Exception e) {
            count++;
            if (count == MAX_TRIES) {
                throw(e);
            }
        }
    }
}

А затем

retry(() -> doSomething(a, b));
retry(() -> doSomethingElse(a));

Эта простая реализация не очень гибкая и, тем не менее, могла бы использовать лучшую обработку исключений.Вы можете использовать библиотеку , чтобы сделать это (отказ от ответственности: я являюсь автором этой библиотеки), или, по крайней мере, посмотреть, как она работает, и повторно использовать некоторые из ее идей.

...