View Full Version : Java: come fare per.....
Homodeus
10-12-2002, 14:40
Qualcuno saprebbe dirmi se è possibile (ed in caso affermativo come) recuperare a runtime la classe chiamante di una classe in oggetto....Vi prego è urgente!
Ciao
Non ho capito bene...vuoi sapere a runtime la classe di appartenenza di un oggetto??
oggetto.getClass().getName();
Altrimenti riformula la domanda...
Homodeus
10-12-2002, 15:19
intanto grazie,
quello che voglio sapere io esattamente è questo:
supponi di richiamare da una classe un metodo di un'altra classe, ebbene io vorrei sapere nella classe il cui metodo è richiamato qual è la classe che l'ha chiamato..Grazie ancora
La via + semplice è senz'altro quella di aggiungere nella firma del costruttore (o del metodo se ti serve solo li) della seconda classe un parametro di tipo Object.(o più specializzato a seconda delle esigenze);
Object caller=null;
public mySecondaClasse(..... , Object caller);{
caller = _caller;
}
perciò dalla prima classe istanzierai la seconda passando this nel costruttore
mySecondaClasse seconda = new mySecondaClasse(..., this);
Homodeus
10-12-2002, 16:47
ti ringrazio nuovamente per la tua disponibilità..e approfitto della tua gentilezza per incalzarti nuovamente:
sapresti raggiungere lo stesso obiettivo dalla parte del chiamato senza che il chiamante passi la propria istanza?
Quesito interessante... se provi a spiegarmi le tue esigenze magari mi viene in mente qualcosa...
Comincia a dare un'occhiata ai metodi della classe java.lang.Class, in special modo al metodo getDeclaredClasses()
Returns an array of Class objects reflecting all the classes and interfaces declared as members of the class represented by this Class object.
Originariamente inviato da Homodeus
[B]ti ringrazio nuovamente per la tua disponibilità..e approfitto della tua gentilezza per incalzarti nuovamente:
sapresti raggiungere lo stesso obiettivo dalla parte del chiamato senza che il chiamante passi la propria istanza?
lancia un Throwable, prenditi lo stack trace e analizzalo.
Originariamente inviato da Canonto
[B]
lancia un Throwable, prenditi lo stack trace e analizzalo.
Un po' poco ortodosso, ma non male come idea! :)
Homodeus
11-12-2002, 10:45
Originariamente inviato da Canonto
[B]
lancia un Throwable, prenditi lo stack trace e analizzalo.
Vi ringrazio davvero per i suggerimenti e la cortesia.
Sapresti articolare con qualche ulteriore dettaglio questo suggerimento ?
Originariamente inviato da Homodeus
[B]
Vi ringrazio davvero per i suggerimenti e la cortesia.
Sapresti articolare con qualche ulteriore dettaglio questo suggerimento ?
Io lo lascerei per ultimo comunque...
Throwable è la superclasse di Exception e di tutti gli errori che possono verificarsi in JAVA.
Un eccezione può essere lanciata a runtime dalla JVM oppure lanciata dal programmatore con l'istruzione
throw new Exception("Questo è il messaggio");
o new Throwable()...
Le eccezioni sono oggetti veri e proprio...con printStackTrace() ottieni in output tutto lo stack con informazioni + o - significative di come si è generato l'errore... Una cosa tipo:
java.awt.IllegalComponentStateException: component must be showing on the screen
to determine its location
at java.awt.Component.getLocationOnScreen(Component.java:746)
at javax.swing.Autoscroller.mouseDragged(Autoscroller.java:86)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:1824)
at java.awt.Component.processEvent(Component.java:2207)
at java.awt.Container.processEvent(Container.java:901)
at java.awt.Component.dispatchEventImpl(Component.java:1812)
at java.awt.Container.dispatchEventImpl(Container.java:946)
at java.awt.Component.dispatchEvent(Component.java:1744)
at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.repostEvent(Bas
icTableUI.java:377)
at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mouseDragged(Ba
sicTableUI.java:438)
at java.awt.AWTEventMulticaster.mouseDragged(AWTEventMulticaster.java:25
7)
Potresti salavare in uno stream lo stack con metodo
printStackTrace(PrintStream s)
Prints this throwable and its backtrace to the specified print stream.
oppure
void printStackTrace(PrintWriter s)
e analizzarlo...
Ti segnalo che dal JDK 1.4 esiste un metodo:
StackTraceElement[] getStackTrace()
Provides programmatic access to the stack trace information printed by printStackTrace().
che rende le cose sicuramente + semplici :D
Homodeus
11-12-2002, 12:11
Grazie mille, adesso provo a seguire i vostri consigli..poi vi dico!
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.