Witam, czy istnieje sposób na poznanie nazwy klasy wywołującej funkcję, w szczególności dla aplikacji Java-GWT?Jak poznać klasę wywołującą funkcję
Odpowiedz
Thread.currentThread
nie jest obsługiwana w GWT (należy pamiętać, że kod Java zostanie skompilowany do JavaScript), więc jest to możliwe duplikat:
How do you find out the caller function in JavaScript?
W GWT chcesz po prostu napisać jsni opakowanie:
public static native void whosMyCaller() /*-{
$wnd.alert(arguments.callee.caller.toString());
}-*/;
W GWT nie jest to naprawdę możliwe, ponieważ w trybie produkcji kod jest mocno zoptymalizowany poprzez włożenie i usunięcie nieosiągalnego kodu. Na przykład. w trybie kompilacji większość funkcji nie należy do żadnej klasy, ponieważ GWT uznał definicję klasy za zbyteczną. Teoretycznie możliwe jest znalezienie klasy wywołującej (jeśli próbujesz analizować raport kompilacji lub przez JSNI), ale z powodu optymalizacji in-line otrzymasz wiele dziwnych wyników (na przykład, nawet jeśli funkcja jest wywoływana tylko w niektórych konkretna klasa, w trybie kompilacji może się okazać, że jest bezpośrednio wywoływana z punktu wejścia w metodzie OnLoad)
W bajtodzie jest to możliwe? – xybrek
You meannormal java? jest to możliwe za pośrednictwem Thread.currentThread(). getStackTrace(), jak powiedzieli inni ludzie. W DevMode może to być również możliwe, ale nie jestem pewien, czy klasa Thread jest dozwolona w DevMode. Możesz spróbować stworzyć Exceptino i przeanalizować jego stacktrace. – jusio
- 1. Pobierz instancję wywołującą (nie klasę) metody lub konstruktora.
- 2. Python Dziedziczy z jednej klasy, ale zastępuje metodę wywołującą inną klasę?
- 3. Jak poznać radość autotools?
- 4. Jak poznać wszystkie pochodne klasy rodzica?
- 5. Jak poznać typ obiektu jQuery?
- 6. jak poznać ścieżkę indeksu UITableView.visibleCells?
- 7. Jak poznać typ obrazu matlab
- 8. Jak poznać wersję jQuery programowo
- 9. Jak poznać zainstalowaną wersję xdebug?
- 10. Jak poznać nazwę obecnego storyboardu?
- 11. Jak poznać priorytetowe szyny I18n
- 12. Jaki argument przemawiać i jak go poznać?
- 13. Jak rozszerzyć klasę Django o klasę DateFieldListFilter?
- 14. Jak zamienić klasę Laravel Builder na klasę
- 15. poznać głębię słownika
- 16. HTML5 Canvas: jak poznać limit rozmiaru?
- 17. Jak poznać dystrybucję Linuksa, której używam?
- 18. Jak poznać koniec FTP Wiadomość powitalna
- 19. jak poznać wszystkie opcje stylu widżetu ttk
- 20. Apple Watch: Jak poznać rozmiar ekranu?
- 21. Jak poznać bajty odczytu (przesunięcie) BufferedReader?
- 22. Jak mogę poznać wersję CLR zrzutu awaryjnego?
- 23. Jak poznać wersję JUnit w Eclipse
- 24. Jak poznać przyczynę zakończenia kontenera dokera?
- 25. Jak poznać rozmiar zmiennej w MATLAB
- 26. Jak poznać rozmiar pliku przed jego pobraniem?
- 27. Jak poznać żądanie HTTP z Ajax?
- 28. Jak poznać wartość wbudowanego makra w RPM?
- 29. Jak poznać rolę bieżącego użytkownika w WordPress?
- 30. Jak poznać fragment czasowy programu linux scheduler?
możliwy duplikat [Java: Find Caller Class] (http://stackoverflow.com/questions/2887607/java-find- klasa wywołująca) –
Refleksja i pokrewne API nie są emulowane przez GWT. Musisz znaleźć inny sposób na osiągnięcie tego, co chcesz. – Strelok