Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    Richiamare un package per mezzo di una stringa

    Buon giorno ragazzi.
    Supponiamo di avere un progetto con due package (A e B) e all'interno del package B voler richiamare una classe del package A.
    Potrei ovviamente nel Package B importare quello A, ma non è quello che voglio.
    Potrei fare nel Package B
    Codice PHP:
    PackageA.class 
    Ma non è quello che voglio.

    Ciò che voglio è fare la seguente cosa:
    Codice PHP:
    String pacco="PackageA";
    pacco.class; 
    Così però non va.
    L'esigenza nasce dal fatto di voler importare dinamicamente package diversi.
    Qualcuno ha qualche idea?
    Grazi in anticipo a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    La cosa più semplice è usare la reflection (http://docs.oracle.com/javase/tutorial/reflect/):
    codice:
    Class clazz = Class.forName("packageA.ClassName");

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Quote Originariamente inviata da borras Visualizza il messaggio
    La cosa più semplice è usare la reflection (http://docs.oracle.com/javase/tutorial/reflect/):
    codice:
    Class clazz = Class.forName("packageA.ClassName");
    Grazie per la risposta, ma non riesco ad usarne i metodi, ho fatto così:

    Package1 contiene la classe Main

    Codice PHP:
    public static void main(String[] argsthrows ClassNotFoundExceptionNoSuchMethodException {
            Class 
    = Class.forName("Package2.NewClass"); 
    Package2 contiene NewClass che contiene il metodo metodo

    Codice PHP:
    package Package2;
    public class 
    NewClass {        public String metodo(){return "ciao";}} 
    Nel main tuttavia non riesco a invocare il metodo metodo
    Codice PHP:
    c.metodo(); 

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da playbasfa Visualizza il messaggio
    Nel main tuttavia non riesco a invocare il metodo metodo
    Codice PHP:
    c.metodo(); 
    Questo perché metodo() non è un metodo di Class!

    Se vuoi eseguire metodo() devi istanziare un oggetto del tipo incapsulato nel Class (dovrebbe essere il metodo newInstance()) e ottenere un Method da invocare.

    Mi pare che tu abbia le idee un po' confuse... Ti consiglio di iniziare leggendoti il tutorial Oracle: http://docs.oracle.com/javase/tutori...nvocation.html
    Ultima modifica di Alex'87; 15-10-2013 a 15:04
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    No puoi invocarlo direttamente sull'oggetto "Class", devi istanziare un oggetto di quello classe e poi su di esso invocarlo e non di certo con la notazione "c.metodo" ma sempre usando la reflection (basta leggere il link che ti è stato dato) a me no che non vuoi effetture un cast esplicito a quel tipo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Perfetto vi ringrazio, creando l'istanza tutto va!

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.