rJava provies two levels of API: low-level JNI-API in the form of .jcall
function and high-level reflection API based on the $
operator. The former is very fast, but inflexible. The latter is a convenient way to use Java-like programming at the cost of performance. The reflection API is build around the $
operator on jobjRef-class
objects that allows to access Java attributes and call object methods. $
returns either the value of the attribute or calls a method, depending on which name matches first.
$<-
assigns a value to the corresponding Java attribute.
This is just a convenience API. Internally all calls are mapped into .jcall
calls, therefore the calling conventions and returning objects use the smae rules. For time-critical Java calls .jcall
should be used directly.
NOTE: This interface is still very experimental! Some type conversions may not work or it may fail to find the method you want. You may need to use .jcall
, consult .jmethods
, .jfields
and possibly apply .jcast
in such cases. If it is a general problem, please report such issues whith a small reproducible example.