JSNI (вызов из javascript в java)

В примере Jsni для вызова метода java из javascript мы пишем это

            $wnd.testJSNI=
        @com.jsni.client
        .HelloJSNI::testJSNI(Ljava/lang/String;)(test);

Я пытаюсь понять, но не могу найти, что именно мы имели в виду под Ljava/lang/String? и обязательно ли мы передаем эти аргументы?


person user1226162    schedule 19.03.2012    source источник


Ответы (2)


Ljava/lang/String; сообщает GWT, что метод ожидает параметр String, который будет передан как значение test в вашем примере кода.

В общем, в методах JSNI вам нужно сообщить GWT, какие типы параметров, или вы можете использовать ярлык (*), который сообщает GWT, чтобы он сам это понял. Это работает в большинстве случаев, насколько я видел. Таким образом, ваш код также может быть записан как:

var test = 'This is my test string';
$wnd.testJSNI = @com.jsni.client.HelloJSNI::testJSNI(*)(test);
person Jason Hall    schedule 19.03.2012

Этот формат «Ljava/lang/String;» выглядит как JNI. Он используется для описания в текстовом виде. , тип данных. Подробнее читайте здесь.

person CodeChimp    schedule 19.03.2012
comment
Это не JNI, это JSNI, специфичный для GWT. - person Jason Terk; 19.03.2012
comment
Я понимаю, но этот формат от JNI, который имеет дело с межъязыковыми типами данных. Я предполагаю, что они повторно используют одну и ту же номенклатуру для JSNI, которая делает то же самое (вызов кода с одного языка с другого языка) и должна знать, какой тип данных вы отправляете. - person CodeChimp; 19.03.2012
comment
согласен, JNI используется под капотом, и эти типы объявляются таким образом для JVM. +1. - person Eliran Malka; 20.03.2012