These types are bound to identifiers having the form <TYPENAME>
.
(This syntax and most of the names are as in RScheme.)
To find which Java classes these types map into, look in
kawa/standard/Scheme.java
.
Note that the value of these variables are instances
of gnu.bytecode.Type
,
not (as you might at first expect) java.lang.Class
.
The type of keyword values. See Keywords.
The type of (mutable) Scheme strings. This is not the same as (non-mutable) Java strings (which happen to be the same as
<symbol>
).
The type of Scheme character values. This is a sub-type of
<object>
, in contrast to type<char>
, which is the primitive Javachar
type.
This type name is a special case. It specifies the class
<java.lang.String>
(just as<symbol>
does). However, coercing a value to<String>
is done by invoking thetoString
method on the value to be coerced. Thus it "works" for all objects. It also works for#!null
.When Scheme code invokes a Java methods any parameter whose type is
java.lang.String
is converted as if it was decalred as a<String>
.
More will be added later.
A type specifier can also be one of the primitive Java types.
The numeric types <long>
, <int>
, <short>
,
<byte>
, <float>
, and <double>
are converted from the
corresponding Scheme number classes. Similarly, <char>
can be converted to and from Scheme characters. The type
boolean
matches any object, and the result is false
if and only if the actual argument is #f
.
(The value #f
is identical to Boolean.FALSE
,
and #t
is identical to Boolean.TRUE
.)
The return type <void>
indicates that no value is returned.
A type specifier can also be a fully-qualified Java class name
(for example <java.lang.StringBuffer>
). In that case,
the actual argument is cast at run time to the named class.
Also, <java.lang.StringBuffer[]>
represents
an array of references to java.lang.StringBuffer
objects.