Am Mittwoch, 16. August 2017 09:24:49 UTC+2 schrieb Bill Tang:
>
> I am working on a Jsinterop wrapper for the GSAP javascript library, and I 
> am quite new to GWT, so I have come across a few problems I am not sure how 
> to solve. 
>
> My main issue revolves around trying to wrap javascript functions into 
> Java objects. 
>
> For example, if I have a native javascript function that has a function as 
> one of its parameters, how can I go about wrapping this function
> in java? 
>

The parameter that is a JS Function should be modeled using a Java 
functional interface, e.g. JsFunction<In, Out> { Out exec(In input); }. 
Then you can use Java method references or lambdas.

 

> And if a javascript class has a function has one of its properties, how 
> can I go about wrapping this property?
>

Similar as above. In Java the property type would be a @JsFunction 
annotated interface.
 

I've had some success using the @JsFunction annotation along with 
> functional interfaces, but I am faced with the problem
> where I have to declare return types, parameters, and paramater types in 
> the java interface, when I want to be able to supply
> any arbitrary function, just like I would in native javascript. Is there 
> any way to mimic this functionality? 
>

Java is strongly typed, so some JS things are not possible in Java. Do you 
have a concrete example? Usually JS libs have some rules to functions and 
which parameters they expect. If you have trouble with so called "union 
types" you can take a look 
at 
https://docs.google.com/document/d/14mQeAGQ9M_5uTTUbzRQzCYETA887dTO-xFLtQhgUXXk/edit
 
to see how the jsinterop generator handles it.

-- J.

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to