2012-01-23 14 views
6

Ciao c'è un modo per conoscere il nome della classe chiamante di una funzione, in particolare per un'applicazione Java-GWT?Come conoscere la classe chiamante di una funzione

+0

possibile duplicato di [Java: Trova classe chiamante] (http://stackoverflow.com/questions/2887607/java-find- call-class) –

+1

Reflection e API correlate non vengono emulate da GWT. Devi trovare un altro modo per realizzare ciò che vuoi. – Strelok

risposta

4

Thread.currentThread non è supportata in GWT (si ricordi che il codice Java viene compilato a JavaScript), quindi questo è un possibile duplicato di:

How do you find out the caller function in JavaScript?

In GWT devi semplicemente scrivere un wrapper JSNI:

public static native void whosMyCaller() /*-{ 
    $wnd.alert(arguments.callee.caller.toString()); 
}-*/; 
+0

Come dovrei adottare il codice per ottenere il callee con GWT? – xybrek

+0

Esiste una funzione di "utilità" per farlo? – xybrek

+0

non c'è una "utility" in GWT (2.4.0), potresti semplicemente creare un metodo jsni – milan

0

non è davvero possibile in GWT, poiché nel codice modalità di produzione è fortemente ottimizzato in-rivestimento e la rimozione del codice irraggiungibile. Per esempio. in modalità compilata la maggior parte delle funzioni non appartiene a nessuna classe, poiché GWT considera la definizione di classe ridondante. In teoria è possibile trovare la classe del chiamante (se si tenta di analizzare il report di compilazione o se tramite JSNI), ma a causa dell'ottimizzazione in-lining si otterranno molti risultati strani (ad esempio anche se la funzione è chiamata solo in alcuni classe specifica, in modalità compilata potresti trovare che è chiamata direttamente dal metodo entry point onLoad)

+0

In bytecode è possibile? – xybrek

+0

Hai un java normale? è possibile tramite Thread.currentThread(). getStackTrace() come dicevano gli altri. In DevMode anche questo potrebbe essere possibile, ma non sono sicuro che la classe Thread sia permessa in DevMode. Potresti provare a creare un Exceptino e analizzare il suo stacktrace. – jusio

Problemi correlati