Как узнать класс вызывающей функции - PullRequest
6 голосов
/ 23 января 2012

Здравствуйте, есть ли способ узнать имя класса вызывающей функции, особенно для приложения Java-GWT?

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Thread.currentThread не поддерживается в GWT (помните, что java-код компилируется в javascript), поэтому это возможный дубликат:

Как узнать функцию вызова в JavaScript?

В GWT вы просто пишете обертку jsni:

public static native void whosMyCaller() /*-{
    $wnd.alert(arguments.callee.caller.toString());
}-*/;
0 голосов
/ 23 января 2012

На самом деле это невозможно в GWT, поскольку в рабочем режиме код сильно оптимизирован за счет встраивания и удаления недоступного кода. Например. в скомпилированном режиме большинство функций не принадлежит ни одному классу, так как GWT считает определение класса избыточным. Теоретически можно найти класс вызывающего (если вы попытаетесь проанализировать отчет о компиляции или через JSNI), но из-за встроенной оптимизации вы получите много странных результатов (например, даже если ваша функция вызывается только в некоторых конкретный класс, в скомпилированном режиме вы можете обнаружить, что он вызывается напрямую из точки входа в метод onLoad)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...