
Originariamente inviata da
Nio74
Buon Giorno come si definisce questo tipo di concatenamento di metodi "se cosi si può definire" dove posso studiarlo bene?Nello specifico L'Ovverride di Map.
Innanzitutto il codice è un po' contorto e confuso. Io non l'avrei mai scritto così.
E non ci sono "concatenazioni" di metodi (non è usato il cosiddetto "method chaining"). Si tratta semplicemente di varie anonymous inner class. Ma ripeto, scritte così sono davvero poco leggibili.
Se guardiamo solo la costruzione del StringRequest si ha:
codice:
StringRequest stringRequestSms = new StringRequest(Request.Method.POST, DATA_SMS, ....altri 2 parametri.... ) {
@Override
protected Map<String, String> getParams() {
Map<String,String> params = new HashMap<String,String>();
params.put("username", USERNAME_SMS);
params.put("password",PASS_SMS);
params.put("mitt",MITTENTE);
params.put("dest",DESTINATARIO);
params.put("testo",TESTO_SMS);
return params;
}
};
Questa è una anonymous inner class che estende la classe StringRequest. Viene invocato il costruttore che riceve 4 argomenti. L'unico motivo di questa anonymous inner class è per effettuare un override del metodo getParams che presumibilmente serve per fornire dei "parametri" sotto forma di mappa. La mappa non ha nulla di particolare, è un HashMap parametrizzato, vengono fatti dei put e poi viene restituita.
Se guardiamo agli argomenti 3 e 4 del costruttore di StringRequest, essi sono a loro volta delle anonymous inner class.
codice:
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
}
e
codice:
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
Queste anonymous inner class, perlomeno per quello che si vede qui, fanno un override di un metodo, con corpo vuoto (può darsi che il fatto di fare nulla sia voluto ... non lo so).