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.
names and .DollarNames returns all fields and methods associated with the object.
Method names are followed by ( or () depending on arity.
This use of names is mainly useful for code completion, it is not intended to be used programmatically.
This is just a convenience API. Internally all calls are mapped into .jcall calls, therefore the calling conventions and returning objects use the same rules. For time-critical Java calls .jcall should be used directly.