Visualizzazione dei risultati da 1 a 3 su 3

Discussione: come Si definisce

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    come Si definisce

    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.

    codice:
     private void mandasms(){
    
        SharedPreferences preferenze = PreferenceManager.getDefaultSharedPreferences(this);
        final String  TESTO_SMS= preferenze.getString("edit_text_Sms","Messaggio sms");
        String DATA_SMS = "http://www.subitosms.it/gateway.php";
        final String USERNAME_SMS ="";
        final String PASS_SMS="";
        final String MITTENTE = "";
        final String DESTINATARIO = tvSms.getText().toString();
    
        StringRequest stringRequestSms = new StringRequest(Request.Method.POST, DATA_SMS, new Response.Listener<String>() {
            @Override
    public void onResponse(String response) {
    
    
            }
        }, new Response.ErrorListener() {
            @Override
    public void onErrorResponse(VolleyError error) {
    
            }
        }){
            @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;
            }
        };

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Nio74 Visualizza il messaggio
    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).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Grazie della spiegazione ora mi sono schiarito un Po di xonfusione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.