docs Java di close() metodo java.lang.AutoCloseable diceCosa significa metodo idempotente e quali sono gli effetti collaterali in caso di chiamata al metodo close di java.lang.AutoCloseable?
* <p>Note that unlike the {@link java.io.Closeable#close close}
* method of {@link java.io.Closeable}, this {@code close} method
* is <em>not</em> required to be idempotent. In other words,
* calling this {@code close} method more than once may have some
* visible side effect, unlike {@code Closeable.close} which is
* required to have no effect if called more than once.
cosa si intende con il metodo idempotente e quali sono gli effetti collaterali di chiamare questo metodo close() due volte? E poiché l'interfaccia Closeable estende AutoCloseable perché gli effetti collaterali non sono visibili nella chiusura dell'interfaccia Closeable?
idempotent in un contesto di programmazione significa che si può ripetere tranquillamente un'operazione. Ad esempio, è possibile emettere la stessa richiesta HTTP GET più volte senza timore di effetti collaterali (presupponendo che sia stata implementata correttamente sul server). –
Significa che è possibile ripetere quell'operazione 'n' volte e ottenere sempre lo stesso risultato, in Http idempotent metodo esempio è GET – RamonBoza
@RamonBoza Sì, assumendo che il server non cambi la risorsa restituita, e che il client web non 'contare le richieste, e che l'ultima richiesta non è tracciata, ecc. Un esempio migliore sarebbe 'public int add (int first, int second) {return first + second; } 'Due chiamate successive non cambierebbero di certo lo stato del programma, in quanto il programma non modifica nemmeno il suo stato. Un altro esempio 'void close() {if (! Closed) {file.close(); closed = true; }} 'come cambia stato nella prima chiamata, ma lo stato rimane identico nelle chiamate successive. –