Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    81

    invocazione metodi indiretti

    Ho un JavaBean Anagrafe.

    ho a disposizione solo una stringa="Anagrafe"

    voglio istanziare un oggetto di questa classe prendendo i nome dalla stringa. successivamente voglio invocare i metodi set del JavaBean.

    come faccio? cosa devo usare? qualcuno mi puo' fare un esempio?

    avevo pensato a
    Class c;
    Object O;
    O=c.ClassForName(stringa);

    e poi?

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    81
    mi son letto le guide ma non mi è chiaro come fare una cosa:

    l'oggetto che io possiedo è un javabean e ha gli attributi privati.
    A me serve, utilizzando la reflecrion, sapere quali metodi ha questa classe di cui conosco il nome.
    come faccio?

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    O non capisco bene cosa chiedi, oppure tu non hai letto abbastanza...

    Ridai una ripassata qui:

    http://java.sun.com/docs/books/tutor...ssMembers.html

    e in particolare a quest metodo:

    http://java.sun.com/javase/6/docs/ap...eclaredMethods()

    Ciao
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    81
    ero riuscito a risolvere il problema, comunque sei stato gentilissimo.
    Ora mi trovo di fronte a questa situazione:

    ho questo metodo che mi serve per invocare genericamente i metodi di classi generiche a seconda delle esigenze.


    public static void setProperty(String name, Object target, Object value)
    {
    Method metodo = null;
    String nameToUpperCase = checkCase(name);
    try
    {
    metodo = target.getClass().getMethod("set" + nameToUpperCase, new Class[] {value.getClass()});
    }
    catch (NoSuchMethodException e) { }
    if (metodo != null)
    try
    {
    metodo.invoke(target, new Object[] {value});
    }
    catch (Exception ecc) { }
    }


    questo metodo mi serve ad esempio per invocare
    setCodice(String cod)
    ma anche
    setPrezzo(int price)

    il problema è che con String mi funziona perchè è un object mentre con i primitivi no.
    Che faccio gli passo un wrapper per ogni primitivo?

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Francamente non so bene quale possa essere la soluzione migliore..

    Prima possibilità: effettui l'overloading del metodo setProperty

    setProperty (String, Object, Object) {// Originale}
    setProperty (String, Object, int) { // Crea il wrapper e chiama l'originale}
    setProperty (String, Object, String) { // Come sopra }
    ...


    Seconda possibilità: ... no. era una fesseria..

    Spero di aver capito il problema...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    81
    ho pensato anch'io all'overloading e al wrapper ma mi son perso su un'istruzione.

    metodo = target.getClass().getMethod("set" + nameToUpperCase, new Class[] {value.getClass()} );

    in pratica io a getMethods devo passare la lista dei parametri ( Class[] parameterTypes) che poi in realtà è un solo elemento, ad esempio un int,

    se value è un wrapper ...value.getClass mi restituisce Integer e non int e dunque non troverebbe mai il metodo setPrezzo(int price)

    non so se mi son spiegato bene.

    se prima trasformo l'Integer in int con parse... poi mica posso fare il .getClass() essendo un primitivo?

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