Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 15-09-2004, 13.04.48   #1
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
[Java] Invocare il main di una classe da un'altra

Ciao a tutti!

Mi servirebbe una mano...

E' possibile chiamare, da una mia classe Java (tramite un metodo o qualcos'altro), l'esecuzione di una classe Java già compilata, di cui quindi ho già i .class, tramite il suo main, a cui passare dei parametri?

In sostanza ho una classe così:

Codice:
public class UtilityClass{

    public static void Main(String args[]){
        //pastrugna un po' i parametri
    }
}
e la vorrei chiamare da una mia classe così:

Codice:
public class MyClass{

    public mioMetodo(){
       //fai qcosa per invocare il Main di UtilityClass
       //con i parametri param1 e param2.
    }
}
E' possibile o lo posso fare solo da riga di comando usando la solita sinstassi "java UtilityClass <parametri>" ?

Grazie!
Dav82 non è collegato   Rispondi citando
Vecchio 15-09-2004, 15.24.31   #2
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Vabbè va, mi crocifiggo da solo, sono un pessimo programmatore.
Niente di più semplice che chiamare il metodo main... ma va te che uno non ci pensa.. uno pensa che main sia "speciale", che abbia la puzza sotto al naso e invece...
Dav82 non è collegato   Rispondi citando
Vecchio 15-09-2004, 16.39.20   #3
DavideDave
Non ci cite niente?
Top Poster
 
L'avatar di DavideDave
 
Registrato: 19-03-2001
Loc.: MilanoRossoNera
Messaggi: 4.095
DavideDave promette bene
il main è un metodo come un altro

solo che viene invocato in automatico nel caso la classe venga lanciata da riga di comando con il comando "java"
___________________________________

Vuoi il link del programma che ti ho appena consigliato? Clicca qui
Vuoi sapere il perchè del mio sotto-nick? Premi ALT-F4
..::LaMiaConfigurazione::..
DavideDave non è collegato   Rispondi citando
Vecchio 15-09-2004, 20.10.47   #4
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Quota:
Originariamente inviato da DavideDave
il main è un metodo come un altro

solo che viene invocato in automatico nel caso la classe venga lanciata da riga di comando con il comando "java"
Eh già

Durante il pranzo mi è venuta l'illuminazione
Questa sera mi metto in ginocchio sui ceci davanti ad una tazza di caffè, per chiedere il perdono a San Java
Dav82 non è collegato   Rispondi citando
Vecchio 16-09-2004, 10.51.40   #5
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Si ok funziona ..

però...

Cerchiamo di mantenere l'incapsulamento, le gerarchie ecc. che sono proprie della buona porgrammazione oop...

Il main è un metodo come gli altri .. può essere accettabile come definizione .. in realtà, se vogliamo parlare in termini analitici .. non lo è .. il "main" è l'entry point di un'applicazione inoltre è un metodo statico .. e i blocchi statici sono soggetti a convenzioni di chiamata diversi .. chiamarli "tradizionalmente" significa scardinare queste convenzioni di chiamata.

Non voglio criticarti Dav82, so benissimo che sei un programmatore molto capace e sai il fatto tuo .. scrivo queste righe perché potrebbero magari essere utili anche ad altri che si trovassero nella tua stessa situazione...

In questi casi di solito si cerca di spostare il codice eseguibile dalla main al costruttore o ad un terzo metodo chiamato dalla stessa main per poi richiamare tale metodo nelle occorrenze successive.

Ad esempio:
Classe chiamata (con main)
Codice:
public class Classe1
{
   public Classe1() {}

   public Classe1(String args)
   {
      // codice eseguibile:
      // pastrugno coi parametri
   }


   public static void main(String[] args)
   {
      // delego all'istanza della classe
      // l'esecuzione del codice eseguibile.
      new Classe1(args);
   }

}
... classe chiamante...

Codice:
public Classe2
{
   private Classe1 C1;
   // al posto di chiamare la main, utilizzo il 
   // costruttore o un 
   // secondo metodo che abbia all'interno il 
   // codice eseguibhile.
   C1 = new Classe1("pippo", "pluto", "paperino");

   public Classe2() {}

}
In questo modo si rispetta la logica e le convenzioni di chiamate dei metodi statici .. e anche il ruolo del "main" .. che verrà eseguito nel caso in cui la classe sia lanciata dal runtime java, ma che non sarà poi chiamato all'interno delle altre classi chiamanti.

NOTA: L'overload del costruttore è necessario, in quanto .. se non lo facessi, il codice eseguibile verrebbe chiamato sia all'atto della costruzione della classe, che dalla main, nel caso in cui lanciassi tale classe col comando java...

Bye

Ultima modifica di P8257 WebMaster : 16-09-2004 alle ore 12.31.10
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 16-09-2004, 14.43.40   #6
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Tutto perfetto, grazie Web! (Y)

Eh, averla potuta scrivere io quella classe...
Purtroppo fa parte di una libreria che ho scaricato, e si integra in un altro programmone mega galattico, e metterci le mani è un po' una tragedia... e i geni che l'hanno scritta, hanno fatto le API Java per tutto il resto, tranne che per usare sta classe, che può essere solo fatta partire dal main, perchè ha tutto lì dentro Per vedere cosa faceva ho dovuto usare un bel convertitore .class -> .java, altrimenti mi sognavo di far funzionare il tutto

Era un po' che non ti si vedeva, tutto bene?
Dav82 non è collegato   Rispondi citando
Vecchio 16-09-2004, 16.27.55   #7
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Ah .. ok .. lo dicevo in linea di massima ... pensavo che l'applicativo fosse proprio stato progettato così ..

L'hai usato il decompilatore eh .. ;-).. meno male che c'é .. certe volte serve..

... Si, proprio dei geni a mettere tutto nella main.. un bel "metodone" e non ci si pensa più .. scritto da gente che ha sempre programmato procedurale, cosa ci scommetti? ...

Bye

P.S.: ho latitato.. prima le vacanze, poi il lavoro mi rincorreva .. ma per fortuna sono più veloce di lui ..

P.P.S.: sto mettendo giù le specifiche della battaglia navale, conto anche su di te!
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 17-09-2004, 09.58.28   #8
DavideDave
Non ci cite niente?
Top Poster
 
L'avatar di DavideDave
 
Registrato: 19-03-2001
Loc.: MilanoRossoNera
Messaggi: 4.095
DavideDave promette bene
il JAD rulla
___________________________________

Vuoi il link del programma che ti ho appena consigliato? Clicca qui
Vuoi sapere il perchè del mio sotto-nick? Premi ALT-F4
..::LaMiaConfigurazione::..
DavideDave non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[Java] - Classe non trovata Alhazred Programmazione 0 19-02-2008 22.35.29
[*BUNTU] problema riproduzione video con aixgl Paramir Linux e altri Sistemi Operativi 5 30-11-2006 14.35.43
[JAVA] Chiarimento sulla classe BufferedReader Downloader Programmazione 1 23-11-2006 13.12.47
[*BUNTU] un buon source.list per apt-get (synaptic) vi puo' essere utile by puma7911 puma7911 Linux e altri Sistemi Operativi 1 13-11-2005 19.23.28
[Java] Caricare dinamicamente un jar e usare tutte le sue classi Dav82 Programmazione 9 06-12-2004 20.14.17

Orario GMT +2. Ora sono le: 04.04.18.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.