Considerazioni anti-pattern a parte, dovrei sempre chiamare super
in Java quando sovrascrivi i metodi, anche quando il metodo è vuoto?
Dai un'occhiata al codice qui sotto, questo è un estratto da AsyncTask
e può essere trovato qui . AsyncTask
s sono spesso usati in Android e l'unico metodo che dobbiamo implementare è l'abstract doInBackground()
. Altri metodi, come onPreExecute()
e onPostExecute()
, sono utili per sovrascrivere in alcuni casi. Nota che questi due metodi sono implementati ma in realtà non fanno nulla, cioè sono vuoti.
Ho visto affermazioni che, poiché sono vuote, non dobbiamo ignorarle. Lo faccio ancora perché non so se lo cambieranno in un'implementazione futura (e perché l'editor lo fa per me). Esiste una best practice per questo caso?
/**
* Override this method to perform a computation on a background thread. The
* specified parameters are the parameters passed to {@link #execute}
* by the caller of this task.
*
* This method can call {@link #publishProgress} to publish updates
* on the UI thread.
*
* @param params The parameters of the task.
*
* @return A result, defined by the subclass of this task.
*
* @see #onPreExecute()
* @see #onPostExecute
* @see #publishProgress
*/
protected abstract Result doInBackground(Params... params);
/**
* Runs on the UI thread before {@link #doInBackground}.
*
* @see #onPostExecute
* @see #doInBackground
*/
protected void onPreExecute() {
}
/**
* <p>Runs on the UI thread after {@link #doInBackground}. The
* specified result is the value returned by {@link #doInBackground}.</p>
*
* <p>This method won't be invoked if the task was cancelled.</p>
*
* @param result The result of the operation computed by {@link #doInBackground}.
*
* @see #onPreExecute
* @see #doInBackground
* @see #onCancelled(Object)
*/
@SuppressWarnings({"UnusedDeclaration"})
protected void onPostExecute(Result result) {
}