Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #8
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Se vuoi usare la reflection puoi iniziare guardando questa discussione su Stack Overflow, che mi pare abbastanza completa: http://stackoverflow.com/questions/1...me-as-a-string

    Usando SpEL (ma in questo modo ti porti dietro un pezzo dello Spring Framework...) però è molto più semplice perché ti nasconde tutta la reflection:

    codice:
    Persona persona = new Persona();
    String s = "indirizzo.numeroCivico";
    
    ExpressionParser parser = new SpelExpressionParser(new SpelParserConfiguration(true, true));
    Expression expression = parser.parseExpression(s);
    String numeroCivico = (String) expression.getValue(persona);
    http://docs.spring.io/spring/docs/3....pressions.html
    Purtroppo non posso usare Spring. Mi sono documentato un po' e ho abbozzato queste quattro righe di codice che sembra funzionino. Mi potere dare suggerimenti per miglioramenti ?

    codice:
    public class Test {
        public static void main(String args[]) throws Exception {
            Indirizzo indirizzo = new Indirizzo("via Rossi", "10", "Roma", "RM");
            Persona pp = new Persona("rossi","carlo", indirizzo);
            String a = "indirizzo.numeroCivico";
            String[] percorso = a.split("\\.");
            Object p = pp;
            for(int i=0; i<percorso.length; i++){
                    Class tClass = p.getClass();
                    String perc = percorso[i].substring(0, 1).toUpperCase() 
                                     + percorso[i].substring(1,percorso[i].length());
                    Method gs1Method = tClass.getMethod("get"+perc, new Class[] {});
                    Object ob1 = gs1Method.invoke(p, new Object[] {});
                    p = ob1;
            }
            String risultato = (String) p;
        }
            
    }
    Ovviamente ho creato i due costruttori nelle classi Persona e Indirizzo per i test.
    Ultima modifica di Macgiglio; 09-11-2013 a 15:21

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.