Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #2
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.