AutoClose HttpURLConnection аналогично подключению к БД (используя попытку с ресурсом) в JAVA - PullRequest
0 голосов
/ 19 ноября 2018

Автоматическое закрытие HttpURLConnection (аналогично подключению к БД с использованием try-with-resourse) здесь я ищу для закрытия HttpURLConnection, не закрывая вручную ex: urlConnection.disconnect (); в окончательном блоке

1 Ответ

0 голосов
/ 19 ноября 2018

Это не совсем то же самое, но вы можете написать класс-оболочку для Autocloseable, который делает это за вас.

class AutocloseWrapper<T> implements Autocloseable {
    T wrapped;
    Consumer<T> closeMethod;
    public AutocloseWrapper(T wrapped, Consumer<T> closeMethod) {
        this.wrapped = wrapped; this.closeMethod = closeMethod;
    }
    public void close() {
        closeMethod.accept(wrapped);
    }
}

И вы бы назвали это с

private void yourMethod() {
    HttpUrlConnection connection = createConnection();
    try (AutocloseWrapper wrapper = new AutocloseWrapper(connection, HttpUrlConnection::disconnect)) {
        // do your stuff with the connection
    }
    // connection.disconnect() will have been called here
}
...