.jfloat marks a numeric vector as an object that can be used as parameter to Java calls that require float parameters. Similarly, .jlong marks a numeric vector as long parameter, .jshort as short and .jbyte as byte.

.jfloat(x)
.jlong(x)
.jbyte(x)
.jchar(x)
.jshort(x)

Arguments

x

numeric vector

Value

Returns a numeric vector of the class jfloat, jlong, jbyte, jshort or jchar that can be used as parameter to Java calls that require float, long, byte, short or char parameters respectively.

Details

R has no native float or long type. Numeric vectors are stored as doubles, hence there is no native way to pass float numbers to Java methods. The .jfloat call marks a numeric vector as having the Java type float by wrapping it in the jfloat class. The class is still a subclass of numeric, therefore all regular R operations are unaffected by this.

Similarly, .jlong is used to mark a numeric vector as a parameter of the long Java type. Please note that in general R has no native type that will hold a long value, so conversion between Java's long type and R's numeric is potentially lossy.

.jbyte is used when a scalar byte is to be passed to Java. Note that byte arrays are natively passed as raw vectors, not as .jbyte arrays, although non-scalar .jbyte is equivalent except for using four-times as much memory.

.jchar is strictly experimental and uses integer vector as storage class. The type char in Java represents 16-bit Unicode code points (not to be confused with char in C which is byte in Java!), see Java documentation for details. x can also be a non-NA string in which case .jchar(x) is just a shorthand for .jnew("java.lang.String", x)$toCharArray() and thus performs a Java call (unlike all other functions mentioned here).

See also