BBB : User's guide : Java Binding - urschleim/scream GitHub Wiki
Object system
Operations
scream offers a simple but powerful interface to the Java object system.
The syntax (make-object ... is used in various forms to create a Java-object.
(make-object symbolic-java-class-name)-- Creates an object representing a class instance of symbolic-java-class-name.(make-object (symbolic-java-class-name))-- Calls the default (parameterless) constructor to create an object of the passed symbolic-java-class-name.(make-object (symbolic-java-class-name ctor-arg₁ ...))-- Calls the constructor of the passed symbolic-java-class-name that matches the passed parameter types.
All operations return a value of type object. The (object? obj) can be used to check if a certain value represents an object. Object-typed values are functions and can be used to interact with the Java-object. Assume for the following that a Java-object has been successfully created by the following code:
(define obj
(make-object (java.class.Name ...)))
After that, the following operations are possible:
(obj symbolic-property-name)-- returns the value of the member-variable symbolic-property-name.(obj symbolic-property-name new-value)-- sets the value of the member-variable symbolic-property-name to new-value.(obj (operation-name arg₁ ...)-- calls the operation obj.operation-name with the passed argument list.
Type mappings
From Scheme to Java (mapping is implemented in SchemeObject#convertScreamToJava).
| Epected Java type | Required Scheme type | Remark |
|---|---|---|
| any | Scheme value () |
An empty list matches all object types. |
| boolean | boolean | |
| byte | integer [-128..127] | |
| short | integer [-32768..32767] | |
| int | integer [-2147483648 ..2147483647] | |
| long | integer | |
| float | real | |
| double | real | |
| char | character | |
| java.lang.String | string | |
| fcos.FirstClassObject | no conversion required | This is used if Java-operations are called that know sream's internal type system. |
| array[] | vector |